我引用了一个C#windows表单应用程序( Program_Ref ),尝试编写一个具有类似功能的新程序( Program_A )。
功能调用之一'查找设备',这意味着使用供应商ID和产品ID查找特定的USB设备。
两个应用程序在启动时都能正常工作,但是当我尝试使用功能时“查找设备”#39;再次,我的整个应用程序(包括UI)将被卡住。
相反,示例应用程序仍然可以正常工作。
我怀疑问题来自 [STAThread] 。 这是两个程序之间的区别:
Ref.cs
public class Ref
{
internal static FrmMain FrmMy;
public static void Main()
{
FrmMy = new FrmMain();
Application.Run(FrmMy);
}
}
FrmMain.cs
internal class FrmMain : Form
{
// Other codes...
[STAThread]
internal static void Main() { Application.Run(new FrmMain()); }
}
以下代码是我的:
A.cs
public class A
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
Form1.cs的
public partial class Form1 : Form
{
// Other codes...
// There's no entry point
}
我无法弄清楚它们的区别,以及如何解决问题?
感谢。
答案 0 :(得分:0)
幸运的是,我找到了解决问题的解决方案,与您分享。
这是我找到的解决方案:
What is this error: System.Runtime.InteropServices.COMException?
但我的计划有一点不同:
Project Properties -> Build -> Prefer 32-bit
我取消选择'Prefer 32-bit'选项,该应用程序工作正常。 希望解决方案可以帮助别人,谢谢。