AppDomain.GetCurrentThreadId();使它工作,不确定如何?

时间:2018-09-05 11:57:36

标签: c# .net wpf

警告: 1个月前,我没有任何编程知识就开始使用c#进行编码。

我正在使用以下方法将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();

我已经编写了一个相当复杂的数据库程序,到目前为止,它似乎可以正常工作,并且我理解其中的大多数代码,因此,如果有人可以向我解释我对上述“解决方案”所做的确切操作,我将非常感激。

1 个答案:

答案 0 :(得分:1)

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

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