C#多线程之子线程与主线程之间的通信

2021/10/12 17:14:14

本文主要是介绍C#多线程之子线程与主线程之间的通信,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

C#多线程之子线程与主线程之间的通信

    • 功能需求
    • 代码解决
    • 参考链接

功能需求

主线程开启WebSocket子线程,然后子线程在接收到数据之后需要将数据回传到主线程,由于数据处理其中的一些事项是要通过主线程才能操作的。
这样就引出了一个子线程怎么去通知主线程要做哪些事情呢?为了解决上面的问题我找了好的多资料,最后我发现了SynchronizationContext对象。
这个对像的用处就是可以记录一个线程的上下文然后再子线程处理完之后,要用到主要程去操作的时候可以去Post或者Send一个事件支解决,这样就很方便。

代码解决

class Client
{
    private Thread m_workThread;
    private SynchronizationContext m_ThreadSynContext;

    public TestClient()//构造函数当然是主线程执行的
    {
        m_ThreadSynContext= SynchronizationContext.Current; //在这里记录主线程的上下文
        m_workThread= new Thread(new ThreadStart(DoWork));//创建一个新的线程
    }

    private void OnConnected(object state)//由于是主线程的同步对象Post调用,这个是在主线程中执行的
    {
        //这里就回到了主线程里面了
        //做一些事情
    }

    private void DoWork()//这个是workThread线程执行的
    {
        //这儿做些事(连接什么的。。。)
        //这而干完了
        m_ThreadSynContext.Post(new SendOrPostCallback(OnConnected), null);//通知主线程
    }
}

参考链接

https://blog.csdn.net/qq_23127851/article/details/78270988



这篇关于C#多线程之子线程与主线程之间的通信的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程