原程序架构
此程序有一功能是通过ListBox记录按钮操作,包含【Initialize】、【Disable】、【Read Volt】和【Keep Read】。
其中【Initialize】、【Disable】、【Read Volt】按钮均是单次读取,并没有使用线程,所以能直接在按钮事件中对ListBox执行Iteam.Add()方法。如下举例Disable按钮的事件处理,应该很好理解。
private void btnDisable_Click(object sender, EventArgs e)
{
bool ret = My9113CardDevice.CardRelease();//卡Release,返回值表示是否成功。
if (ret)
{
ShowActionAtListBox("Release Card Finish!",MsgType.Action);//MsgType是个枚举,这里可忽略其作用。
}
else
{
ShowActionAtListBox("Release Card Failed!",MsgType.Error);
}
}
ListBox项目添加信息的方法。
private void ShowActionAtListBox(string ActionString , MsgType msgType)
{
string[] MT = new string[] {

这篇博客记录了在C# Winform开发中遇到线程间操作无效的问题。作者在【Keep Read】按钮中创建线程以避免卡顿,但在多线程操作ListBox时引发错误。为解决这个问题,作者采用了创建委托和事件的方式,使ListBox在Button KeyDown事件中通过异步调用事件订阅者的方法,成功实现了线程安全的操作。
8093

被折叠的 条评论
为什么被折叠?



