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、运行结果

相关推荐
小曹要微笑37 分钟前
C#的运算符重载
开发语言·c#·运算符重载·c#运算符重载
我是唐青枫39 分钟前
C#.NET Channel 深入解析:高性能异步生产者消费者模型实战
开发语言·c#·.net
Crazy Struggle42 分钟前
C# + ViewFaceCore 快速实现高精度人脸识别
c#·人脸识别·.net·开源项目
小曹要微笑1 小时前
委托(Delegate)在C#中的概念与应用
前端·javascript·c#
人工智能AI技术2 小时前
Oracle裁员3万人的警钟:C#程序员如何构建AI工具链反杀,从“被替代“到“驾驭AI“
人工智能·c#
小曹要微笑2 小时前
事件(Event)在C#中的概念与应用
c#·委托·事件·c#事件
xgstb3 小时前
如何使用C#与SQL Server数据库进行交互
数据库·c#·交互
未来之窗软件服务4 小时前
浏览器开发CEF(二十二)C#闪退处理——东方仙盟元婴期
开发语言·人工智能·c#·浏览器开发·仙盟创梦ide·东方仙盟
czhc11400756634 小时前
c# 312 事件 委托
开发语言·c#
金山几座5 小时前
C#学习记录-变量与类型
学习·c#