C# 将使用线程的函数转换为使用异步/等待
是否可以使用c#中新的异步/等待功能执行以下操作:C# 将使用线程的函数转换为使用异步/等待,c#,multithreading,asynchronous,async-await,C#,Multithreading,Asynchronous,Async Await,是否可以使用c#中新的异步/等待功能执行以下操作: static void Main(字符串[]args) { 线程[]线程=新线程[101]; 对于(int i=0;i
static void Main(字符串[]args)
{
线程[]线程=新线程[101];
对于(int i=0;i<101;i++)
{
线[i]=新线(预加工);
线程[i].Start();
}
光洁度(螺纹);
}
私有静态void IntenseWork()
{
睡眠(5000);
}
私有静态void Finish(线程[]线程数组)
{
foreach(threadArray中的线程ta)
{
ta.Join();
}
Console.WriteLine(“按任意键继续…”);
Console.ReadKey();
}
我知道Async/Await有一些限制,您只能使用thread。但对于这样一个示例,其中有一个函数DoWork需要同时在多个线程上运行,它可以完成吗?这是什么
static void Main(string[] args)
{
Task[] tasks = new Task[101];
for (int i = 0; i < tasks.Length; i++)
{
tasks[i] = IntenseWork();
}
Task.WaitAll(tasks);
Console.WriteLine("Press Any Key to Continue...");
Console.ReadKey();
}
private static async Task IntenseWork()
{
await Task.Delay(5000);
}
static void Main(字符串[]args)
{
任务[]任务=新任务[101];
for(int i=0;i
创建一个任务
集合并使用任务。什么时候
@Nkosi你能给我一个小样本来说明我是如何做到的吗?有人已经给出了答案。如果给出了副本(要求完全相同的问题),您还应该花一些时间阅读此参考资料还不足以考虑搜索和澄清为什么现有的解决方案无法解决问题,所以它可以被重新打开。我看到了,我正在处理任务而不是线程,然后可以调用task.WaITALL而不是线程。这是唯一的区别吗?@BlakeRivell“only”就像冰山一样大。@PanagiotisKanavos我明白你的意思,但就我的例子而言,我的意思是。这不是一个好例子。它不会在后台运行任何东西async/await
本身并不能使方法异步或成为后台job@BlakeRivell你的例子不完整。NET有很多方法来处理并发、并行或异步处理。这是三种不同的型号。并行处理1M数据项与异步处理100个HTTP请求不同,这样它们就不会阻塞调用线程。
static void Main(string[] args)
{
Task[] tasks = new Task[101];
for (int i = 0; i < tasks.Length; i++)
{
tasks[i] = IntenseWork();
}
Task.WaitAll(tasks);
Console.WriteLine("Press Any Key to Continue...");
Console.ReadKey();
}
private static async Task IntenseWork()
{
await Task.Delay(5000);
}