AppDomain.GetCurrentThreadId();使它工作,不知道如何?

问题描述 投票:1回答:1

警告:我在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();

我写了一个相当复杂的数据库程序,到目前为止似乎完美无缺,我理解其背后的大部分代码,所以如果有人能够向我解释我对提到的“解决方案”到底做了什么,我真的很感激。

c# .net wpf
1个回答
1
投票

GetCurrentThreadId是一个WinApi函数,位于kernel32.dll(在C中实现)。 C#允许您通过名为P / Invoke的机制指定如何调用此函数,该机制通过其名称动态查找指定库中的函数,并正确编组参数和返回值(如果有)。

如果.NET无法满足您的需求,通常可以解决使用P / Invoke的问题,但请注意,这不是100%可移植的解决方案。在其他平台上,该功能可能不存在,但如果您将自己限制在Windows(就像您已经做过的那样,查看您链接的答案),那就没关系。

© www.soinside.com 2019 - 2024. All rights reserved.