【问题标题】:AppDomain.GetCurrentThreadId(); made it work, not sure how?AppDomain.GetCurrentThreadId();让它工作,不知道如何?
【发布时间】:2023-03-29 15:48:01
【问题描述】:

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

我编写了一个相当复杂的数据库程序,到目前为止它似乎可以完美运行,并且我理解它背后的大部分代码,所以如果有人能向我解释我对上述“解决方案”的确切做法,我将不胜感激.

【问题讨论】:

标签: c# .net wpf


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多