警告:我在1个月前开始编码,没有预先存在的编程知识。
我正在使用以下方法将MessageBox置于父窗口中:How to get MessageBox.Show() to pop up in the middle of my WPF application?
我收到警告声称AppDomain.GetCurrentThreadId();方法已经过时了,所以我在这里找到了一个“解决方案”:http://www.pinvoke.net/default.aspx/kernel32/GetCurrentThreadId.html
由于代码不适用于uint,我将其更改为int,然后更改了AppDomain.GetCurrentThreadId();到GetCurrentThreadId();
[DllImport("kernel32.dll")]
static extern int GetCurrentThreadId();
我写了一个相当复杂的数据库程序,到目前为止似乎完美无缺,我理解其背后的大部分代码,所以如果有人能够向我解释我对提到的“解决方案”到底做了什么,我真的很感激。
GetCurrentThreadId是一个WinApi函数,位于kernel32.dll(在C中实现)。 C#允许您通过名为P / Invoke的机制指定如何调用此函数,该机制通过其名称动态查找指定库中的函数,并正确编组参数和返回值(如果有)。
如果.NET无法满足您的需求,通常可以解决使用P / Invoke的问题,但请注意,这不是100%可移植的解决方案。在其他平台上,该功能可能不存在,但如果您将自己限制在Windows(就像您已经做过的那样,查看您链接的答案),那就没关系。