只是一个简单的问题.我相信这只是一个快速的语法问题.下面我发送3个线程并测试多线程我只是让方法返回一个int,而不是使用它们来做任何事情.
现在,我正在尝试更进一步,并返回发送每个线程的数据表.但是,我显然不能说'datatable dt = tasks.Add(.... etc.'
那么我如何同时发送所有3个线程并将3个数据表返回给我?我会使用除数组之外的东西吗?
编辑 - 我想我不是在解释自己,我道歉.我正在做的就是每个方法(nrx.nzrxin,ni.nzinputins)返回一个数据表.我只是不知道在线程中发送方法的语法.通常你会做'datatable dt = nrz.nzrxins'.你是如何完成任务的呢?
谢谢,
NZInput NI = new NZInput();
NZOutput NO = new NZOutput();
NZRX NRX = new NZRX();
List<Task> tasks = new List<Task>(3);
tasks.Add(Task.Run(() => NRX.nzrxins()));
tasks.Add(Task.Run(() => NI.nzinputins()));
tasks.Add(Task.Run(() => NO.nzoutputins()));
Task.WaitAll(tasks.ToArray());
Run Code Online (Sandbox Code Playgroud) 有没有办法在控制台应用程序中使用tasks/await而应用程序终止于await语句?以下不在主要方法范围内.它属于一个单独的类.主叫它.我研究了一下,看了一篇关于使用manualresetevent的文章,但是当我尝试将这个逻辑插入到这个类中时,它没有什么区别,它永远不会超越等待.它刚关闭.
Task Taskone = Task.Run(() => (threadOne.checkData(numberArray,archivePath,dirone,dirtwo, ref missingoneList)));
Task Tasktwo = Task.Run(() => (threadTwo.checkAll(numberArray, archivePath, dirone, dirtwo, ref missingtwoList)));
Task Taskthree = Task.Run(() => (threadThree.checkCnt(numberArray, archivePath, dirone, dirtwo, ref missingthreeList)));
await Task.WhenAll(Taskone,Tasktwo,Taskthree);
Console.WriteLine("all tasks have completed");
Run Code Online (Sandbox Code Playgroud)
先感谢您.
快问,我试图异步执行一个方法并发出3个线程.我做了一个小方法并在Program.cs类中尝试了它,以及一个单独的类,但它仍然没有显示为可用的执行方法.有人在上一个问题中告诉我,你不能在main中执行异步任务,你必须在一个单独的方法中执行它.
所以我创建了一个单独的方法,但是我只是不确定如何调用它.每个任务都返回一个数据表.
我如何调用异步方法从main执行?我的审讯结果应该是主要的吗?
static void Main(string[] args)
{
}
public async void job()
{
SchoolData CSD = new SchoolData();
FloData FD = new FloData();
GiftData GD = new GiftData();
List<Task<DataTable>> tasks = new List<Task<DataTable>>();
tasks.Add(Task.Run(() => CSD.getSchool()));
tasks.Add(Task.Run(() => FD.getFlo()));
tasks.Add(Task.Run(() => GD.getGift()));
var Results = await Task.WhenAll(tasks);
}
Run Code Online (Sandbox Code Playgroud)