Предотвратить превращение процесса в не отвечающий - PullRequest
0 голосов
/ 08 февраля 2019

Моя программа должна сделать тяжелый расчет.Весь процесс перестает отвечать на запросы через несколько секунд из-за вычислений, в то время как использование ЦП остается где-то на уровне около 20%, а использование памяти - около 100 МБ.делая тяжелые вычисления?

1 Ответ

0 голосов
/ 08 февраля 2019

Все, что вам нужно сделать, это просто перенести этот тяжелый расчет в другой поток.
Вот модифицированный пример из документации :

using System;
using System.Threading;

public class ServerClass
{
    // The method that will be called when the thread is started.
    public void HeavyCalculation()
    {
        Console.WriteLine(
            "Heavy Calculation is running on another thread.");

        // Pause for a moment to provide a delay to make
        // threads more apparent.
        Thread.Sleep(3000);
        Console.WriteLine(
            "Heavy Calculation has ended.");
    }
}

public class App
{
    public static void Main()
    {
        ServerClass serverObject = new ServerClass();

        // Create the thread object, passing in the
        // serverObject.InstanceMethod method using a
        // ThreadStart delegate.
        Thread InstanceCaller = new Thread(
            new ThreadStart(serverObject.HeavyCalculation));

        // Start the thread.
        InstanceCaller.Start();

        Console.WriteLine("The Main() thread calls this after "
            + "starting the new InstanceCaller thread.");

    }
}

И еще немного документации простоесли вам нужно:
https://docs.microsoft.com/en-us/dotnet/standard/threading/using-threads-and-threading
https://www.tutorialspoint.com/csharp/csharp_multithreading.htm

И краткий способ запуска функции в потоке:
C # Вызов метода в новом потоке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...