private void HandleFlooderError(object sender, EventArgs e) { //Update UI Dispatcher.UIThread.InvokeAsync(() => { this.RaisePropertyChanged(nameof(SelectedAttack)); //Safe cleanup SelectedAttack.Stop(); UpdateStatus(s_defaultStatus); RefreshAttackUi(); }); }
private async Task ActivateControlRunner() { if (SelectedAttack == null) { return; } if (LockedTargetAddress == null) { return; } //Register event SelectedAttack.FloodError += HandleFlooderError; //Update parameters SelectedAttack.Delay = AttackPacketDelay; SelectedAttack.Threads = AttackThreadCount; SelectedAttack.Port = AttackPort; SelectedAttack.Message = AttackMessage; SelectedAttack.Target = IPAddress.Parse(LockedTargetAddress); if (SelectedAttack.IsFlooding) { SelectedAttack.Stop(); UpdateStatus(s_defaultStatus); SelectedAttack.Reset(); } else { SelectedAttack.Start(); UpdateStatus(s_attackingStatus); //Schedule UI updates var updaterResult = Task.Factory.StartNew(() => { while (SelectedAttack.IsFlooding) { UpdateStatistics(); Thread.Sleep(200); } }); } RefreshAttackUi(); }