【问题标题】:Application got stuck when using HidP_GetValueCaps() second times应用程序在第二次使用 HidP_GetValueCaps() 时卡住了
【发布时间】: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
}

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

谢谢。

【问题讨论】:

    标签: c# forms winforms usb hid


    【解决方案1】:

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

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

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

    我取消了“首选 32 位”选项的选择,应用程序正常工作。 希望解决方案可以帮助某人,谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多