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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д