C#中控制台应用程序中方法的并行实例化

时间:2015-03-01 07:52:22

标签: c#

我已经宣布我的Enums是这样的:实际上可能有不同国家的多个枚举。

例如:

public enum Country : long
{

    World = (long)1,
    India = (long)23424848,
    US = (long)23424977
}

public enum EgyptCities: long
{
    Cairo = (long)1521894,
    Alexandria = (long)1522006,
    Giza = (long)1521643
}

在我的控制台应用程序中,我想循环浏览这些枚举。

 var country= Enum.GetValues(typeof(Country)).Cast<Country>();
 var egyptcity= Enum.GetValues(typeof(EgyptCities)).Cast<EgyptCities>();

对于每个枚举,都有一个帐户关联,这意味着所有国家/地区都与一个帐户相关联,只能从中调用这些函数。例如在枚举国家帐户1只能运行。对于城市,枚举帐户2只能运行,等等。

我想在调用此应用程序时并行运行所有帐户。

account1
    (
     for all countries, do some operation
     )

account2

    ( for all egypt cities do an operation

    )

account3 
  (
     for all Indian cities do an operation.
   )

这些都是独立的操作。目前我一个接一个地运行所有这些操作,但我希望它们是并行/异步的。

请让我知道这是如何实现的?

感谢,

1 个答案:

答案 0 :(得分:1)

你的问题很模糊。但一般的答案是,在控制台应用程序中同时执行代码的方法有很多很多

最明显的是使用Task。例如:

public static void Main(string[] args)
{
    Task task1 = Task.Run(() => ProcessAccount1()),
        task2 = Task.Run(() => ProcessAccount2()),
        task3 = Task.Run(() => ProcessAccount3());

    Task.WaitAll(task1, task2, task3);
}

...每个方法ProcessAccountX()执行以下操作:

void ProcessAccount1()
{
    var countries = Enum.GetValues(typeof(Country)).Cast<Country>();

    foreach (var country in countries)
    {
        // do some operation
    }
}

如果您需要更具体的建议,则需要编辑您的问题,以便您提出(更多)更具体的问题。有关如何改进问题的建议,请参阅https://stackoverflow.com/help/how-to-askhttps://stackoverflow.com/help/mcve