private static void DoProcessBlock(object BlockInfo) { try { var Info = (BlockInfo)BlockInfo; Info.BB.StatusUpdate += StatusUpdate; Info.BB.ProcessBlock(); ProcessComplete?.Invoke(Info.BB, Info.tn); } catch (Exception ex) { Error?.Invoke(ex.Message, true); } }
// Старт процесса в режиме удаленного управления public async Task RemoteStart(IDevice device, string box, DateTime dateTime, bool primaryVerification) { try { Product = new ProductInfo(device, box, dateTime, primaryVerification); RemoteStartEvent?.Invoke(this, new EventArgs()); cts = new CancellationTokenSource(); await Task.Run(() => Start(device, primaryVerification, cts.Token)); savingResults.SaveResult(Product, TestResults, dialogService); StopEvent?.Invoke(this, new EventArgs()); ProcessComplete?.Invoke(this, new EventArgs()); } catch (OperationCanceledException) { StopEvent?.Invoke(this, new EventArgs()); } }
// Старт процесса в режиме ручного управления public void Start(IDevice device, CancellationTokenSource cts) { try { CheckSerialNumber(device.SerialNumber); this.cts = cts; device.MetrologicGroupNumber = metrologicGroups.GetMetrologicGroup(device); Product = new ProductInfo(device, DateTime.Now); Start(device, true, cts.Token); savingResults.SaveResult(Product, TestResults, dialogService); ProcessComplete?.Invoke(this, new EventArgs()); } catch (OperationCanceledException) { } catch (Exception ex) { dialogService.ErrorMessage(ex.Message); } }
void SomeWork() { //Do some work, and when its over... ProcessComplete.Invoke(this, null); }
private void OnComplete(object sender, EventArgs data) { ProcessComplete?.Invoke(this, data); }