我有一个奇怪的问题。我需要使用几个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()
没有完成?
答案 0 :(得分:1)
DLL显然在Windows消息队列上发布了一些必需的消息。为了处理消息,必须清空消息队列。
确保处理这些消息的一种方法是使用Application.DoEvents()。通常不赞成Application.DoEvents()-有关原因请参见https://blog.codinghorror.com/is-doevents-evil/。
还有其他方法可以解决此问题,而无需使用Application.DoEvents(),但这可能需要重组代码-例如,使用带有Task.Delay的async / await。