第二次使用HidP_GetValueCaps()

时间:2017-01-04 10:11:53

标签: c# forms winforms usb hid

我引用了一个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
}

我无法弄清楚它们的区别,以及如何解决问题?

感谢。

1 个答案:

答案 0 :(得分:0)

幸运的是,我找到了解决问题的解决方案,与您分享。

这是我找到的解决方案:
What is this error: System.Runtime.InteropServices.COMException?

但我的计划有一点不同:
Project Properties -> Build -> Prefer 32-bit

我取消选择'Prefer 32-bit'选项,该应用程序工作正常。 希望解决方案可以帮助别人,谢谢。