如果我使用TPL我在Parse中遇到问题。方法我确实使用Console.Write来构建一些Line,但有时候一个是快速写入其他方法行。我如何锁定或有更好的方法?
Parallel.Invoke(
() => insertedOne = Lib.ParseOne(list),
() => insertedTwo = Lib.ParseTwo(list),
() => insertedThree = Lib.ParseThree(list));
Parse ..方法的例子。
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;
}
答案 0 :(得分:2)
能够将blabla
,hahahah
和egegege
打印为单个实体(不可分割)
你可以把你的方法写成:
public static int ParseThree(string[] _list)
{
lock (Console.Out)
{
Console.Write("egegege");
Console.Write("egegege");
}
return 0;
}
答案 1 :(得分:1)
为什么不一个接一个地在一个线程中运行所有任务?
System.Threading.Tasks.Task.Factory.StartNew(()=>
{
insertedOne = Lib.ParseOne(list);
insertedTwo = Lib.ParseTwo(list);
insertedThree = Lib.ParseThree(list);
});
这样你就不会有那么多的竞争条件。