C#基于事件异步模式的实现2(续)

1、代码

csharp 复制代码
private void button2_Click(object sender, EventArgs e)
        {
            listBox1.Items.Add($"The thread id is {Thread.CurrentThread.ManagedThreadId}");

            BackgroundWorker worker = new BackgroundWorker();
            worker.DoWork += new DoWorkEventHandler((s1, s2) =>
            {
                Thread.Sleep(2000);
                ListBoxAcrossDomain(listBox1,$"The asynchronous thread id is {Thread.CurrentThread.ManagedThreadId}");
            });
            listBox1.Items.Add($"The test is start");
            //注册事件来实现异步
            worker.RunWorkerAsync(this);
            listBox1.Items.Add($"The test is end");
        }

        public static void ListBoxAcrossDomain(ListBox listBox,string text)
        {
            if(listBox == null) return;
            if(listBox.InvokeRequired)
            {
                listBox.Invoke(new Action(() => { listBox.Items.Add(text); }));
            }
            else
            {
                listBox.Items.Add(text);
            }
        }

2、运行结果

相关推荐
烛阴5 小时前
C# 正则表达式(5):前瞻/后顾(Lookaround)——零宽断言做“条件校验”和“精确提取”
前端·正则表达式·c#
m5655bj10 小时前
使用 C# 实现 Excel 工作表拆分
windows·c#·excel·visual studio
fengfuyao98512 小时前
基于C#实现的支持五笔和拼音输入的输入法
开发语言·c#
xiaowu08012 小时前
C# 多返回值写法
java·前端·c#
前端慢慢其修远13 小时前
利用signalR实现简单通信(Vue2+C#)
c#·vue
微小冷14 小时前
C#异步编程详解
开发语言·c#·async·await·异步编程
qq_3161652914 小时前
C#委托和事件的区别
开发语言·c#
刘975314 小时前
【第24】天24c#今日小结
开发语言·c#
wangnaisheng14 小时前
【C#】性能优化
c#
CreasyChan16 小时前
Unity DOTS技术栈详解
unity·c#·游戏引擎