具有多个方法调用控制台的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;
}

具有多个方法调用控制台的TPL.写的问题

能够将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);
 });

这样你就不会有那么多的竞争条件