我有一个奇怪的问题。我需要使用几个DLL,以便通过NFC阅读器进行读写。
这有效:
LV3_InitializeSystem(5);
setAuthCode();
MessageBox.Show(""); // I immediately click and close the box
short ret = LV3_CheckIssuer();
Console.WriteLine(ret); // 0 - Success
这不起作用:
LV3_InitializeSystem(5);
setAuthCode();
short ret = LV3_CheckIssuer();
Console.WriteLine(ret); // 90 - Card reader can not be detected.
这也行不通:
LV3_InitializeSystem(5);
setAuthCode();
Thread.Sleep(5000);
short ret = LV3_CheckIssuer();
Console.WriteLine(ret); // 90 - Card reader can not be detected.
我不知道可能是什么问题。我尝试使用运行初始化部分的线程但未成功。显示
MessageBox
如何使初始化完成但Thread.Sleep()
不能完成? 最佳答案
DLL显然在Windows消息队列上发布了一些必需的消息。为了处理消息,必须清空消息队列。
确保处理这些消息的一种方法是使用Application.DoEvents()。通常不赞成Application.DoEvents()-有关此原因,请参见https://blog.codinghorror.com/is-doevents-evil/。
还有其他方法可以解决此问题,而无需使用Application.DoEvents(),但可能需要重组代码-例如,将async / await与Task.Delay一起使用。
关于c# - 没有MessageBox,C#DLL无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51149182/