知方号

知方号

总结几种C#窗体间通讯的处理方法

总结几种C#窗体间通讯的处理方法

总结几种C#窗体间通讯的处理方法

搁浅ing: 事件回调 用不了

C#中跨线程访问控件问题解决方案

GWIA: 楼主您好,我尝试过您文章中的方法:“对于深山老林提出的问题,我最近找到了更优的解决方案,利用了delegate的异步调用”。不过,貌似并没有解决跨线程访问控件的运行时异常,您能帮忙看看是不是哪儿写得不对吗?谢谢

C#中跨线程访问控件问题解决方案

GWIA: [code=plain]private void ThreadFunction(){ DateTime last = DateTime.MinValue; while (true) { DateTime now = DateTime.Now; if ((now - last).TotalSeconds > 3) { Console.WriteLine(string.Format("While ThreadId: {0} {1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString())); last = now; } try { this.textBox1.Text = DateTime.Now.ToString(); } catch (System.Exception ex) { } Thread.Sleep(1000); }}private delegate void FlushClient();[/code]

C#中跨线程访问控件问题解决方案

GWIA: [code=plain]private void button1_Click(object sender, EventArgs e){ Console.WriteLine(string.Format("Start Click ThreadId: {0} {1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString())); Thread thread = new Thread(CrossThreadFlush); thread.IsBackground = true; thread.Start(); Console.WriteLine(string.Format("End Click ThreadId: {0} {1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString()));}private void CrossThreadFlush(){ Console.WriteLine(string.Format("Start CrossThreadFlush ThreadId: {0} {1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString())); FlushClient flush = new FlushClient(ThreadFunction); flush.BeginInvoke(null, null); Console.WriteLine(string.Format("End CrossThreadFlush ThreadId: {0} {1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString()));}[/code]

C#中跨线程访问控件问题解决方案

GWIA: [code=plain]private void CrossThreadFlush(){ while (true) { Console.WriteLine(string.Format("ThreadId: {0} {1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString())); Thread.Sleep(2000); this.Invoke(new FlushClient(() => { this.textBox1.Text = DateTime.Now.ToString(); Console.WriteLine(string.Format("Invoke ThreadId: {0} {1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString())); })); } return;}[/code]加了console输出

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。

上一篇 没有了

下一篇没有了