【发布时间】:2017-01-04 10:11:53
【问题描述】:
我引用了一个 C# windows 窗体应用程序(Program_Ref),尝试编写一个具有类似功能的新程序(Program_A)。
其中一个函数调用“查找设备”,这意味着使用供应商 ID 和产品 ID 来查找特定的 USB 设备。
两个应用程序在启动时都可以正常工作,但是当我再次尝试使用“查找设备”功能时,我的整个应用程序(包括 UI)会卡住。
相反,示例应用程序仍然可以正常工作。
我怀疑问题出在 [STAThread]。 这是两个程序之间的区别:
参考.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
}
我无法弄清楚它们的区别,以及如何解决问题?
谢谢。
【问题讨论】: