Unity C# 子线程Action发送到主线程执行

https://mp.csdn.net/postedit/80261275

今天去面试..面试官竟然说子线程的Action不能发送到主线程执行... ...废话不说上干货

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using System;

using System.Threading;

public class ActionDemo : MonoBehaviour {


    public static List> actionlist = new List>();

    void Start()

    {

        actionlist.Add( curname => {

            Debug.Log ("action1 :" + curname);

        });

        actionlist.Add( curname => {

            Debug.Log ("action2 :" + curname);

        });

        //开启子线程

        Thread th = new Thread(ThreadChild);

        th.Start();

    }

    static void ThreadChild()

    {

        //循环三次 关闭线程,养成良好习惯

        for (int i = 0; i < 3; i++) {

            //锁住保证线程安全

            lock(actionlist){

                actionlist.Add( curname => {

                    //这里填子线程中 想去主线程调用的代码 ,例如改变UI

                    Debug.Log ("ThreadChild :" + curname);

                });

                Thread.Sleep(1000);

            }

        }

    }

    void Update(){

        //遍历action 在Update中调用action自然是主线程调用

        for (int i = 0; i < actionlist.Count; i++) {

            ActionDemo.actionlist [i] (Time.time+"");

        }

        actionlist.Clear();

    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 线程是程序执行的最小单元,多线程是指程序同一时间可以有多个执行单元运行(这个与你的CPU核心有关)。 在java中...
    程序员技术圈阅读 985评论 2 17
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • 今下午我去学校看姑娘胡毓夏跑步,我和赵老师跑了两圈后还没看见她下楼来,就去楼上找了,我们刚上来她就出来,姑娘胡毓夏...
    小胡仔娃子阅读 193评论 2 2
  • TONE:3|电力的。启动,结合,服务。 主KIN:蓝鹰,是能够高瞻远瞩的力量。 引导:蓝风暴,强有力的催化力,是...
    玄月之佑阅读 1,028评论 0 0
  • 我有个任性的闺蜜,叫小双,异地三年的男友迟迟不给她结婚的承诺,恼火的她一气之下,撒了个奶奶去世的谎,翘班连夜飞去厦...
    程小韵阅读 706评论 3 1