如下,如何在task1这个线程中,通过委托给主线程来调用ThreadToMain这个方法
使输出为(顺序不重要):
执行主线程!1
hello, task2的线程ID为4
hello, task1的线程ID为3
调用这个程序的线程ID为1
using System;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
public delegate void DelegateFun();
static void Main(string[] args)
{
DelegateFun c = new DelegateFun(ThreadToMain);
void ThreadToMain()
{
Console.Write("ThreadToMain");
Console.WriteLine($"的线程ID为{Thread.CurrentThread.ManagedThreadId}");
}
//1.new方式实例化一个Task,需要通过Start方法启动
Task task1 = new Task(() =>
{
Thread.Sleep(100);
Console.WriteLine($"hello, task1的线程ID为{Thread.CurrentThread.ManagedThreadId}");
c.Invoke();
});
task1.Start();
//2.Task.Factory.StartNew(Action action)创建和启动一个Task
Task task2 = Task.Factory.StartNew(() =>
{
Thread.Sleep(100);
Console.WriteLine($"hello, task2的线程ID为{ Thread.CurrentThread.ManagedThreadId}");
});
Console.Write("执行主线程!");
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
Console.ReadKey();
}
}
}