C#Task线程与UI交互操作

ivu179 2013-07-10 10:50:10
            Task t = new Task(() =>
{
             //模拟工作过程 
Thread.Sleep(1000);
}); t.Start();
t.ContinueWith((task) =>
{
MessageBox.Show("任务已经结束!" +"IsCanceled={0}\tIsCompleted={1}\tIsFaulted={2}" + task.IsCanceled+ task.IsCompleted+task.IsFaulted);  
});
Task开起的新线程如何与UI交互呢,比如我要在过程中修改主线程textBox1的内容。
...全文
1292 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigbaldy 2013-07-10
  • 打赏
  • 举报
回复

this.Invoke((MethodInvoker)(()=>textBox1.Text="xxx";}));
ivu179 2013-07-10
  • 打赏
  • 举报
回复
引用 3 楼 wyd1520 的回复:
[quote=引用 2 楼 ivu179 的回复:]
      static void  TasksEnded(Task[] tasks)
        {
            MessageBox.Show("所有线程结束!");
        }
开启了一组线程后,怎么把所有线程结束的消息传给主线程呢?
线程没有主次之分。你要把所有线程结速通知做啥的。如果要做这个就用AutoEventSet[/quote] 我这个是个循环 每个循环开几个线程处理 处理完了后再接着循环 直到这个循环结束
ivu179 2013-07-10
  • 打赏
  • 举报
回复
引用 4 楼 vb763305825 的回复:
终于升到4个裤衩了
水帖 没有分的
  • 打赏
  • 举报
回复
终于升到4个裤衩了
本拉灯 2013-07-10
  • 打赏
  • 举报
回复
引用 2 楼 ivu179 的回复:
      static void  TasksEnded(Task[] tasks)
        {
            MessageBox.Show("所有线程结束!");
        }
开启了一组线程后,怎么把所有线程结束的消息传给主线程呢?
线程没有主次之分。你要把所有线程结速通知做啥的。如果要做这个就用AutoEventSet
ivu179 2013-07-10
  • 打赏
  • 举报
回复
      static void  TasksEnded(Task[] tasks)
        {
            MessageBox.Show("所有线程结束!");
        }
开启了一组线程后,怎么把所有线程结束的消息传给主线程呢?
syx151 2013-07-10
  • 打赏
  • 举报
回复
用this.Invoke 或者this.BeginInvoke
本拉灯 2013-07-10
  • 打赏
  • 举报
回复
引用 6 楼 ivu179 的回复:
[quote=引用 3 楼 wyd1520 的回复:] [quote=引用 2 楼 ivu179 的回复:]
      static void  TasksEnded(Task[] tasks)
        {
            MessageBox.Show("所有线程结束!");
        }
开启了一组线程后,怎么把所有线程结束的消息传给主线程呢?
线程没有主次之分。你要把所有线程结速通知做啥的。如果要做这个就用AutoEventSet[/quote] 我这个是个循环 每个循环开几个线程处理 处理完了后再接着循环 直到这个循环结束[/quote] 那你在循环的开几个Task后把这几个Task放到这里面 Task.WaitAll(TaskList) 就是拉。4.5没用过,不过跟 2.0AutoEvent一样也有个WaitAll Task.WaitAll(task1, task2, task3);

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧