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(); }