Есть метод, который читает журнал событий:
public List<LogPage> Read()
{
Task<List<LogPage>> task = Task.Factory.StartNew(() =>
{
//здесь читаем
});
task.Wait();
return task.Result;
}
Вот так я его запускаю:
void LoadJournal_Execute(object paramete)
{
Log log = new Log();
var events = log.Read();
}
Как выполнять эту задачу в отдельном потоке? Чтобы GUI не зависало? Версия .Net - 4.0
Вы и так выполняете работу в другом потоке, просто вот тут
task.Wait();
return task.Result;
вы заставляете текущий поток ждать конца выполнения. Чтобы сделать задачу асинхронной, вам не надо ждать окончания таска. Как пример
public Task<List<LogPage>> ReadAsync()
{
return Task.Run(() =>
{
//здесь читаем
});
}
и вызов
async void LoadJournal_Execute(object paramete)
{
Log log = new Log();
var events = await log.ReadAsync();
}
Но имейте ввиду, что код, который вызывает LoadJournal_Execute не узнает, когда метод завершит работу. Если надо, чтобы вызывающий код знал, когда работа завершится, то LoadJournal_Execute также должен вернуть таск.
async Task LoadJournal_Execute(object paramete)
{
Log log = new Log();
var events = await log.ReadAsync();
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей