如何使用 net core / net5+ 为 wpf 设置 STA 公寓状态? [复制]

Posted

技术标签:

【中文标题】如何使用 net core / net5+ 为 wpf 设置 STA 公寓状态? [复制]【英文标题】:How to set STA apartment state for wpf with netcore / net5+? [duplicate] 【发布时间】:2021-10-02 18:19:53 【问题描述】:

通常只需在 Main 方法上添加 [STAThread] 即可完成 - 但是对于新项目,就没有这些了吗?

当我尝试像这样设置自己的程序入口点时:

class Program

    [STAThread]
    static void Main(string[] args)
    
        var application = new App();
        application.Run();
    

它表示找到多个程序条目。所以是的 - 使用旧的 .net wpf 这可行,如何使用 netcore3/net5+ 呢?

【问题讨论】:

“使用旧的 .net wpf 这行得通” - 不清楚你的意思。 “旧” WPF 和 .NET Core 版本的 WPF 工作方式完全相同:为您生成程序入口点,如果您尝试自己显式创建入口点,则会出现错误。跨度> 【参考方案1】:

您不需要 - 自动生成的 Main 方法已经有了。

您可以在相应的obj 目录中找到生成的文件。例如,我刚刚从WpfSta 目录运行dotnet new wpf,这是作为obj/Debug/net5.0-windows/App.g.cs 的一部分生成的:

/// <summary>
/// Application Entry Point.
/// </summary>
[System.STAThreadAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.6.0")]
public static void Main() 
    WpfSta.App app = new WpfSta.App();
    app.InitializeComponent();
    app.Run();

可以编写自己的Main 方法,然后使用项目文件中的StartupObject 属性来指定入口点。但如果只是为了添加STAThread,则不需要。

【讨论】:

以上是关于如何使用 net core / net5+ 为 wpf 设置 STA 公寓状态? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

.Net Core WebApi 目标框架“net5.0”在构建应用程序时解释为“net50”

如何在 .NET Core 3.0 SDK 上构建多目标 .NET 5 和 .NET Core 3.1

如何在 ASP.NET Core 中设置 cookie validateInterval?

.NET Core/.NET5/.NET6 开源项目汇总3:工作流组件

Core 2.1 和 .net5 中的 Encoding.Default.GetString 不等于字符串,来自等于字节数组

.net core 3.0和.net5有什么区别