/// <summary> /// Асинхронно выполняем действие и запускаем событие в GUI потоке /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void OnPerform(object sender, ElapsedEventArgs e) { _timer.Stop(); var result = await Task.Run(() => _action(_param)); _sync.Post(state => Performed?.Invoke(this, result), null); }
public void PerformAlgorithmAsync(GraphAlgorithmParameters parameters) { IsPerforming = true; Parameters = parameters; _algorithmThread = new Thread(() => { Result = PerformAlgorithm(parameters); Performed?.Invoke(Result); IsPerforming = false; IsPerformed = true; }); _algorithmThread.Start(); }