понедельник, 30 октября 2023 г.

Quartz, GitHub, Quarthnet

Quartz, Quartznet

https://www.quartz-scheduler.net/documentation/quartz-3.x/quick-start.html#fluent-scheduler-builder-api 

https://github.com/quartznet/quartznet

D:\VC\Quartz\quartznet

D:\VC\2022\CaSln01\CaSln01.sln


Threads, CurrentThread, MS, ID, ConfigureAwait

https://learn.microsoft.com/ru-ru/dotnet/api/system.threading.thread.currentthread?view=net-7.0

ConfigureAwait

https://habr.com/ru/articles/482354/

https://learn.microsoft.com/ru-ru/dotnet/api/system.threading.tasks.task.configureawait?view=net-7.0

https://habr.com/ru/articles/721050/

https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2007?view=vs-2019

https://learn.microsoft.com/ru-ru/dotnet/fundamentals/code-analysis/quality-rules/ca2007?view=vs-2019

https://devblogs.microsoft.com/dotnet/configureawait-faq/

https://github.com/Microsoft/vs-threading/blob/main/doc/cookbook_vs.md#should-i-await-a-task-with-configureawaitfalse

https://learn.microsoft.com/ru-ru/dotnet/fundamentals/code-analysis/quality-rules/ca2008

https://ru.stackoverflow.com/questions/681382/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-configureawaitfalse

https://dev.to/this-is-learning/understanding-and-using-configureawait-in-asynchronous-programming-2da3

https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task.configureawait?view=net-7.0

https://learn.microsoft.com/ru-ru/dotnet/fundamentals/code-analysis/quality-rules/reliability-warnings

Cancelation, Token, MS

Token

https://learn.microsoft.com/ru-ru/dotnet/api/system.threading.tasks.taskfactory.startnew?view=net-7.0

https://learn.microsoft.com/ru-ru/dotnet/api/system.threading.cancellationtoken.iscancellationrequested?view=net-7.0

StartNew

https://learn.microsoft.com/ru-ru/dotnet/api/system.threading.tasks.taskfactory.startnew?view=net-7.0

воскресенье, 29 октября 2023 г.

NetworkStream.ReadTimeout, Examples

NetworkStream.ReadTimeout, Examples

https://learn.microsoft.com/ru-ru/dotnet/api/system.net.sockets.networkstream.readtimeout?view=net-7.0#-------

// Create a client that will connect to a // server listening on the contosoServer computer // at port 11000. TcpClient tcpClient = new TcpClient(); tcpClient.Connect("contosoServer", 11000); // Get the stream used to read the message sent by the server. NetworkStream networkStream = tcpClient.GetStream(); // Set a 10 millisecond timeout for reading. networkStream.ReadTimeout = 10; // Read the server message into a byte buffer. byte[] bytes = new byte[1024]; networkStream.Read(bytes, 0, 1024); //Convert the server's message into a string and display it. string data = Encoding.UTF8.GetString(bytes); Console.WriteLine("Server sent message: {0}", data); networkStream.Close(); tcpClient.Close();

суббота, 28 октября 2023 г.

BinaryFormatter, Obsolete

BinaryFormatter is Obsolete

Severity Code Description Project File Line Suppression State

Error SYSLIB0011 'BinaryFormatter.Deserialize(Stream)' is obsolete: 'BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.'

https://learn.microsoft.com/ru-ru/dotnet/core/compatibility/serialization/5.0/binaryformatter-serialization-obsolete

Use Xml or Json Serialization

  • Не используйте в коде BinaryFormatter. Рассмотрите возможность использования JsonSerializer или XmlSerializer вместо них. Дополнительные сведения см. в статье Руководство по безопасности BinaryFormatter.

  • Можно временно отключить появляющееся во время компиляции предупреждение об использовании BinaryFormatter (SYSLIB0011). Перед этим мы рекомендуем тщательно оценить риски для кода. Самый простой способ отключить предупреждения — обособить отдельные места вызова директивами #pragma.

    C#
    // Now read the purchase order back from disk
    using (var readStream = new FileStream("myfile.bin", FileMode.Open))
    {
        var formatter = new BinaryFormatter();
    #pragma warning disable SYSLIB0011
        return (PurchaseOrder)formatter.Deserialize(readStream);
    #pragma warning restore SYSLIB0011
    }
    

    Предупреждение можно также отключить в файле проекта.

    XML
    <PropertyGroup>
      <OutputType>Exe</OutputType>
      <TargetFramework>net5.0</TargetFramework>
      <!-- Disable "BinaryFormatter is obsolete" warnings for entire project -->
      <NoWarn>$(NoWarn);SYSLIB0011</NoWarn>
    </PropertyGroup>
    

    В этом случае предупреждение будет отключено во всех файлах с кодом в проекте. Подавление SYSLIB0011 не приводит к отключению предупреждений, вызванных использованием других устаревших API.

  • Чтобы продолжить использование BinaryFormatter в приложениях ASP.NET, можно повторно включить их в файле проекта. Но делать это настоятельно не рекомендуется. Дополнительные сведения см. в статье Руководство по безопасности BinaryFormatter.

    XML
    <PropertyGroup>
      <TargetFramework>net5.0</TargetFramework>
      <!-- Warning: Setting the following switch is *NOT* recommended in web apps. -->
      <EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>
    </PropertyGroup>

Sockets, Server, C#

https://www.youtube.com/watch?v=YxpIN49Bpes

https://www.youtube.com/watch?v=YxpIN49Bpes

MS, DOC, Net.Sockets

System.Net.Sockets

https://learn.microsoft.com/pdf?url=https%3A%2F%2Flearn.microsoft.com%2Fru-ru%2Fdotnet%2Fapi%2F_splitted%2Fsystem.net.sockets%2Ftoc.json%3Fview%3Dnet-7.0

среда, 25 октября 2023 г.

Reflection, Find, MethodByName, Call

Reflection

Find Method by its name

https://stackoverflow.com/questions/3110280/how-to-use-reflection-to-call-method-by-name

https://learn.microsoft.com/en-us/dotnet/api/system.delegate.createdelegate?view=net-7.0&redirectedfrom=MSDN#overloads

Type thisType = <your object>.GetType();
MethodInfo theMethod = thisType.GetMethod(<The Method Name>); 
theMethod.Invoke(this, <an object [] of parameters or null>); 

public static R ResponseHelper<T,R>(T request, string serviceAction)
{
    var service = new ContentServiceRef.CMSCoreContentServiceClient();

    var func = (Func<T,R>)Delegate.CreateDelegate(typeof(Func<T,R>),
                                                  service,
                                                  serviceAction);

    return func(request);
}