2015-05-12 2 views
2

У меня возник недавно вопрос об этом, однако теперь я получаю сообщение об ошибке «Невозможно назначить void неявной типизированной локальной переменной». Подчеркнутая часть - это объявление var Results.C# многопоточность отправки 3 разных темы

Все, что я пытаюсь сделать, это отправить эти 3 разных метода одновременно с тем, что они все работают с данными, и потребуется некоторое время. Я решил асинхронно отправить их, а затем ждать возвращения трех частей будет работать лучше всего. Каждый метод возвращает datatable, и я просто пытаюсь получить доступ к тому, что возвращается.

Может ли кто-нибудь указать мне в правильном направлении?

async void Main(string[] args) 
    { 
     // need instance, virtual methods, may add overrides. 
     SchoolData CSD = new SchoolData(); 
     FData FD = new FData(); 
     GiftData GD = new GiftData(); 


     List<Task> tasks = new List<Task>(); 
     tasks.Add(Task.Run(() => CSD.getSchool())); 
     tasks.Add(Task.Run(() => FD.getF())); 
     tasks.Add(Task.Run(() => GD.getGift())); 

     var Results = await Task.WhenAll(tasks); 
} 
+0

Вы уверены, что это фрагмент кода, который не работает? – Kar

ответ

3

Вы хотите иметь List<Task<DataTable>> поскольку ваши задачи все вычисления DataTables. Поскольку вы храните (не общие) объекты Task, то есть они не представляют никаких результатов.

Вам также необходимо переместить код в другой метод, кроме Main, поскольку он не может быть помечен как async.

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