Добавление IDisposable

This commit is contained in:
2025-02-23 10:18:38 +03:00
parent b6226b68c9
commit ae4979c9f9
12 changed files with 207 additions and 72 deletions
+5
View File
@@ -20,6 +20,11 @@ namespace Example.Frontend
await Task.Yield();
return new ClientBasedPage();
}
public void Dispose()
{
}
}
public class ClientBasedPage : IPage
+37 -22
View File
@@ -3,6 +3,7 @@ using System.Diagnostics;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Example.Frontend;
using Example.Shared;
using mROA.Codegen;
@@ -44,36 +45,50 @@ class Program
//правильный порядок команд 8-5-10-7
var printer = factory.Create("Test");
Console.WriteLine("Printer created");
Thread.Sleep(100);
using (var disposingPrinter = printer.Value)
{
Console.WriteLine("Printer created");
Thread.Sleep(100);
var name = printer.Value.GetName();
Console.WriteLine("Printer name : {0}", name);
Thread.Sleep(100);
var name = disposingPrinter.GetName();
Console.WriteLine("Printer name : {0}", name);
factory.Register(new SharedObject<IPrinter>(new ClientBasedPrinter()));
Console.WriteLine("Registered printer");
Thread.Sleep(100);
Thread.Sleep(100);
factory.Register(new SharedObject<IPrinter>(new ClientBasedPrinter()));
Console.WriteLine("Registered printer");
Thread.Sleep(100);
var registred = factory.GetFirstPrinter();
Console.WriteLine("First printer");
Thread.Sleep(100);
var registred = factory.GetFirstPrinter();
Console.WriteLine("First printer");
Thread.Sleep(100);
Console.WriteLine(registred.Value);
Console.WriteLine("Collecting all printers");
var names = factory.CollectAllNames();
Thread.Sleep(100);
Console.WriteLine(registred.Value);
Console.WriteLine("Collecting all printers");
var names = factory.CollectAllNames();
Thread.Sleep(100);
Console.WriteLine(string.Join(", ", names));
Console.WriteLine(string.Join(", ", names));
var page = printer.Value.Print("Test Page", new CancellationToken()).GetAwaiter().GetResult();
Console.WriteLine("Page printed");
var data = page.Value.GetData();
Console.WriteLine("Data : {0}", Encoding.UTF8.GetString(data));
var page = disposingPrinter.Print("Test Page", new CancellationToken()).GetAwaiter().GetResult();
Console.WriteLine("Page printed");
var data = page.Value.GetData();
Console.WriteLine("Data : {0}", Encoding.UTF8.GetString(data));
}
// var loadSingleton = context.GetSingleObject(typeof(ILoadTest)) as ILoadTest;
var loadSingleton = context.GetSingleObject(typeof(ILoadTest)) as ILoadTest;
var cts = new CancellationTokenSource();
var token = cts.Token;
var t = Task.Run(async () => await loadSingleton!.AsyncTest(token));
Thread.Sleep(5000);
cts.Cancel();
Console.WriteLine($"Token state {cts.Token.IsCancellationRequested}");
Console.ReadKey();
//
// const int iterations = 10000;
// var timer = Stopwatch.StartNew();