`

如何让子线程调用主线程

 
阅读更多

场景为:点击按钮后,后台运算,运算完更新界面,后台是由子线程完成,但由于子线程无法更新主线程的控件,所以这时候需要调用主线程来更新;

1.按钮点击后调用:

Thread thread=new Thread(calculate);

thread.start();

2,点击完按钮后,子线程开始运算

public void calculate(object obj)//该obj就是回调委托

{

//此次是运算过程,当运算完成后执行以下代码

callbackMethod();

 

}

 

3在callbackMethod中,其实还是在子线程,所以在该方法中要获取主线程来更新界面

public void callbackMethod()

{

 

  Application.Current.Dispatcher.Invoke(new Action(()=>

{

//此次是更新界面的代码
}));
}

分享到:
评论

相关推荐

    个人开发小工具--Unity主线程和子线程跳转调用

    Unity除了一些基本的数据类型,几乎所有的API都不能在子线程中调用,如果项目中有一段很耗时操作,unity可能会出现“卡死...因此针对这个问题再加上查找了一些资料,弄出了一个小工具,可以子线程与主线程的相互访问。

    c#子线程如何读取及设置主线程ui的值

    c#子线程如何读取及设置主线程ui的值,自己录的一个小视频,方便理解,比较菜鸟的方法,请勿喷!

    C# 子线程调用主线程窗体的解决方法

    由于Windows窗体控件本质上不是线程安全的。因此如果有两个或多个线程适度操作某一控件的状态(set value),则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的bug,包括争用和死锁的情况。...

    Unity异步线程调用主线程脚本

    Unity异步线程调用主线程脚本程序,在Unity中异步线程调用主线程会报错,所以编写了一个Loom

    通过窗口传递让主线程触发FIRE事件(子线程不能触发)

    通过窗口传递让主线程触发FIRE事件(子线程不能触发)

    C#子线程执行完后通知主线程的方法

    下面小编就为大家带来一篇C#子线程执行完后通知主线程的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    C#子线程更新UI控件的方法实例总结

    一般在winform C/S程序中经常会在子线程中更新控件的情况,桌面程序UI线程是主线程,当试图从子线程直接修改控件属性时会出现“从不是创建控件的线程访问它”的异常提示。 跨线程更新UI控件的常用方法有两种: 1....

    串口通信多线程接收数据,发送数据

    串口通信,多线程接收数据,并可以发送数据

    解决PySide+Python子线程更新UI线程的问题

    print '子线程的运行' t1 = threading.Thread(target=newThread) t1.setDaemon(True) t1.start() 之后我发现用子线程去调用UI线程是行不通的,只能通过信号和槽来实现,于是 首先,定义一个类,让他实现PySide....

    pb多线程(源码)及思路.zip

    通过主线程,调用子线程,然后子线程再调用主线程,通过主线程的两个变量,来判断退出标志,让主线程可以退出。

    C#?副线程调用主线程的控件

     2、副线程函数中通过Control.Invoke(Delegate d)来通过委托方式来调用处理控件的方法。  线程函数: private void go() { while (b) { listBox1.Invoke(new DDO(cc));//DDO为委托类型 private delegate ...

    android中UI主线程与子线程深入分析

    本文较为深入的分析了android中UI主线程与子线程。分享给大家供大家参考。具体如下: 在一个Android 程序开始运行的时候,会单独启动一个Process。默认的情况下,所有这个程序中的Activity或者Service(Service和 ...

    Labview2015多线程异步调用工程

    labview2015关于异步调用功能的研究工程,主要用于解决主线程负责快速轮询,多个子线程负责具体的任务处理并反馈给主线程(子线程需要长时间处理任务),解决单纯的可重复VI不能实现并行的功能。

    Android中两个APP之间的AIDL调用测试.rar

    ②主线程与子线程通信使用handler,handler可以在子线程中发出消息,在主线程处理消息,从而完成线程之间的通信,即使有多个线程,仍然是一个程序。 ③不同程序之间需要通过aidl通信,通信方式可以有多种,aidl是...

    QT多线程—主界面卡死解决方案

    由于耗时的操作会独占系统cpu资源 ,让界面卡死在那里,这时需要考虑多线程方案,将耗时的操作放在主线程之外的线程中执行。该demo通过多线程为主界面卡死提供一种解决方案。

    -Socket-1-master.7z

     就是在某个线程下使用 CAsyncSocket前一定要调用,就算主线程调用了该函数,在子线程下使用 CAsyncSocket也要先调用该函数,要不会出错。  3) 还要注意的是, Create 方法已经包含了 Bind 方法,如果是以 Create 方法...

    socket-支持断点续传java多线程下载

    3 启动主线程,根据线程个数划分每个线程的下载范围。 4启动下载子线程开始下载,子线程将下载的数据量调用统计类进行累计。 4 通过下载统计类得到下载信息,包括下载速度、下载量、剩余时间估计、完成百分比等等。 ...

    JavaJsDemo

    史无前例的 java js 无论主线程还是子线程互相调用 超级简单

    Python3.x+Pyqt5实现主窗体与子窗体相互传数据、传字符、传值;主要使用了信号与槽的方法

    Python3.x+Pyqt5实现主窗体与子窗体相互传数据、传字符、传值;主要使用了信号与槽的方法。

Global site tag (gtag.js) - Google Analytics