Using не вызывает Dispose - C#
Формулировка задачи:
Написал свой Mutex, теперь хочу чтобы он работал с конструкцией using, унаследовал интерфейс Idisposable, переопределили метод Dispose, но Dispose не вызывается. В чем может быть проблема? Заранее спасибо.
public class Mute:IDisposable { LinkedList<Task> coldTasks = new LinkedList<Task>(new[] { Task.Factory.StartNew(() => { }) }); public Task Lock() { Console.WriteLine("-------------------------------------------------"); Task ret = coldTasks.Last.Value; coldTasks.AddLast(new Task(() => { })); return ret; } protected virtual void Dispose(bool disposing) { } public void Dispose() { Console.WriteLine("hjfkhjfhuf"); Release(); Dispose(true); } public void Release() { Console.WriteLine("++++++++++++++++++++++++++++++++++++++"); coldTasks.RemoveFirst(); Task first = coldTasks.First.Value; first.Start(); } public Task LockSection() { return Lock(); } public void Test(){ Mute MuTex = new Mute(); Thread tr = new Thread(() => Inc(MuTex)); tr.Start(); Thread td = new Thread(() => Inc(MuTex)); td.Start(); } int count = 0; private async void Inc(Mute m) { count = 0; //using (await MuTex.LockSection()) //{ // for (int i = 0; i < 10; i++) // { // count++; // Console.WriteLine(count); // } //} using (m.LockSection()) { for (int i = 0; i < 100; i++) { count++; Console.WriteLine(count); } } //await MuTex.Lock(); //for (int i = 0; i < 100; i++) //{ // count++; // Console.WriteLine(count); //} //MuTex.Release(); }
Решение задачи: «Using не вызывает Dispose»
textual
Листинг программы
public Task LockSection() { Task t=Lock(); return t; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д