2015-03-01 2 views
-2

Я объявила свои Enums следующим образом: на самом деле может быть несколько перечислений для разных стран.Параллельная реализация методов в консольном приложении в C#

, например:

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>(); 

Для каждого перечисления есть учетная запись связана, что означает для всех стран счет связан для запуска, из которых только функции могут быть вызваны. например, в enum Country account1 может работать только. для учетной записи enum2 городов может работать только и так далее.

Я хочу запускать все учетные записи параллельно при вызове этого приложения.

account1 
    (
    for all countries, do some operation 
    ) 

account2 

    (for all egypt cities do an operation 

    ) 

account3 
    (
    for all Indian cities do an operation. 
    ) 

Это все независимые operations.At момент я бегу все эти операции один за другим, но я хочу, чтобы они были параллельны/асинхронными.

Пожалуйста, дайте мне знать, насколько хорошо это может быть достигнуто?

спасибо,

ответ

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); 
} 

& hellip; где каждый метод 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-ask и https://stackoverflow.com/help/mcve за советом о том, как улучшить свой вопрос.

Смежные вопросы