Added async task behavior when enable/disable on processes stop. Should mitigate issues with enabling many NICs at a time still needs thorough testing.
parent
9385ff686b
commit
5dc3ce1897
|
@ -8,6 +8,7 @@ using System.Threading;
|
|||
using System.Reflection;
|
||||
|
||||
using WifiSitter.Helpers;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WifiSitter
|
||||
{
|
||||
|
@ -311,17 +312,31 @@ namespace WifiSitter
|
|||
}
|
||||
|
||||
private void ResetNicState (NetworkState netstate) {
|
||||
var taskList = new List<Task>();
|
||||
foreach (var n in netstate.OriginalNicState) {
|
||||
var id = n[0];
|
||||
var stat = n[1];
|
||||
TrackedNic now = netstate.Nics.Where(x => x.Id == id).FirstOrDefault();
|
||||
if (now != null) {
|
||||
if (stat.ToLower() != now.IsEnabled.ToString().ToLower()) {
|
||||
if (stat == true.ToString()) now.Enable();
|
||||
else now.Disable();
|
||||
if (stat == true.ToString()) {
|
||||
var enableTask = new Task(() => { now.Enable(); });
|
||||
enableTask.Start();
|
||||
taskList.Add(enableTask);
|
||||
}
|
||||
else {
|
||||
var disableTask = new Task(() => { now.Disable(); });
|
||||
disableTask.Start();
|
||||
taskList.Add(disableTask); }
|
||||
}
|
||||
}
|
||||
}
|
||||
try {
|
||||
Task.WaitAll(taskList.ToArray());
|
||||
}
|
||||
catch {
|
||||
// TODO log the failure as quick as possible, this only happens when process is closing
|
||||
}
|
||||
}
|
||||
|
||||
#endregion // methods
|
||||
|
|
Loading…
Reference in New Issue