具有多个方法调用控制台的TPL.写的问题
本文关键字:TPL 问题 控制台 调用 方法 | 更新日期: 2023-09-27 18:03:51
如果我使用TPL,我会在Parse中遇到问题。方法:使用Console。编写构建一些行,但有时一个是快,写在其他方法行。我该怎么锁还是有更好的方法?
Parallel.Invoke(
() => insertedOne = Lib.ParseOne(list),
() => insertedTwo = Lib.ParseTwo(list),
() => insertedThree = Lib.ParseThree(list));
解析示例方法。
public static int ParseOne(string[] _list) {
Console.Write("blabla");
Console.Write("blabla");
return 0;
}
public static int ParseTwo(string[] _list) {
Console.Write("hahahah");
Console.Write("hahahah");
return 0;
}
public static int ParseThree(string[] _list) {
Console.Write("egegege");
Console.Write("egegege");
return 0;
}
能够将blabla
s, hahahah
s和egegege
s作为单个实体(不可分割)打印你可以这样写你的方法:
public static int ParseThree(string[] _list)
{
lock (Console.Out)
{
Console.Write("egegege");
Console.Write("egegege");
}
return 0;
}
为什么不在一个线程中一个接一个地运行所有的任务呢?
System.Threading.Tasks.Task.Factory.StartNew(()=>
{
insertedOne = Lib.ParseOne(list);
insertedTwo = Lib.ParseTwo(list);
insertedThree = Lib.ParseThree(list);
});
这样你就不会有那么多的竞争条件