gpt4 book ai didi

c# - 我想同时运行 3 个方法,其他方法等到任何方法完成

转载 作者:太空宇宙 更新时间:2023-11-03 22:28:52 25 4
gpt4 key购买 nike

您好,我想同时运行 3 个方法,其他方法等到任何方法完成。我怎样才能做到这一点?这是我到目前为止所做的。

public static List<Action> actions;
public static int ms = 1;
public static void s1()
{
actions = new List<Action>();
actions.Add(drivers1);
actions.Add(drivers2);
actions.Add(drivers3);
actions.Add(drivers4);
var maxThreads = 3;

int j = 1;
while (true)
{
if (j == 1){
if (ms <= 3) {
while (true) {

if (actions.Count() < 1)
{
j = 0;
}
else
{
thread = new Thread(new ThreadStart(actions[0]));
thread.Start();



}
}
}
else
{
while (true)
{
if (ms <= 3)
{
break;
}
else
{
Thread.Sleep(1000);
}
}
}
}

else
{
break;
}
}

}

此处图片示例:https://drive.google.com/open?id=1_qK2Yu2RjebAfKFdYFovShGR5GiuwzBI

最佳答案

考虑将您的方法包装在任务中那么你可以很容易地使用 Task.WaitAny方法

var task1 = Task.Run(() => Method1() );
var task2 = Task.Run(() => Method2() );
var task3 = Task.Run(() => Method3() );
Task.WaitAny(task1, task2, task3);

请注意,任务包含异常,因此如果您执行此操作并且方法 1、2、3 中发生任何异常,则永远不会执行 catch block :

 try
{
Task task1 = Task.Run(() => Method1());
Task task2 = Task.Run(() => Method2());
Task task3 = Task.Run(() => Method3());
Task.WaitAny(task1, task2, task3);

}
catch (System.Exception)
{
throw;
}

但是你的情况下仍然得到任务变量本身的状态

关于c# - 我想同时运行 3 个方法,其他方法等到任何方法完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59236691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com