C# 工控开发日记001:Winform报错_线程间操作无效

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

原程序架构

此程序有一功能是通过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[] {
   
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值