Ограничение выполнения кода С#

alex1988

Client
Регистрация
13.07.2014
Сообщения
353
Благодарностей
138
Баллы
43
Иногда получается что происходит какой то глюк в коде C# и и проект зависает
В PM помагает только перезапуск, в Zenno - Условия прирывания потока, если не забыли указать или только перезапуск
Есть предложение внедрить данный код в саму програму с лимитом по умолчанию 5-10 минут с возможностью изминения пользывателем

C#:
Task<string> task = new Task<string>(() =>
            {
                // Your code
                return "value";
            });
            task.Start();
            task.Wait(5000); //- Ожидание 5 секунд
            if (task.IsCompleted)
            {
                if (task.Exception != null)
                {
                    throw task.Exception;
                }
                else
                {
                    return task.Result;
                }
            }
           return string.Empty;
и в дерективы Using прописать
C#:
using System.Threading.Tasks;
Данное улутшение позволило бы избежать глюки (кривые руки) в Коде C#
 
  • Спасибо
Реакции: irving zisman

Oleg1987

Client
Регистрация
11.08.2014
Сообщения
1 161
Благодарностей
743
Баллы
113
Лучше предложите просто сделать возможность указать тайм аут выполнения потока. А как уж это реализовать в коде самой zenno - думаю разрабы без вас разберутся))
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
Лучше предложите просто сделать возможность указать тайм аут выполнения потока. А как уж это реализовать в коде самой zenno - думаю разрабы без вас разберутся))
таймаут потока и так есть. таймаут выполнения одной команды тоже есть. все есть.
я так и не понял, что автор хочет ограничить, кривые руки от с# или с# от кривых рук ? :-)
честно говоря мне сложно представить, что может завесить проджект мейкер. только мертвый цикл наверно. ну так для этого есть решение и без всяких параллельных потоков.
вот код который прервет любой цикл по внешнему прерыванию
C#:
if(((ZennoLab.InterfacesLibrary.ProjectModel.Collections.IContextExt)project.Context).IsInterrupted) throw new Exception("Внешнее прерывание");
if(Global.Variables.IsProjectMaker && !Global.Variables.IsDebugMode)  throw new Exception("Внешнее прерывание");
 

Fedor5588

Client
Регистрация
04.06.2017
Сообщения
272
Благодарностей
69
Баллы
28
таймаут потока и так есть. таймаут выполнения одной команды тоже есть. все есть.
я так и не понял, что автор хочет ограничить, кривые руки от с# или с# от кривых рук ? :-)
честно говоря мне сложно представить, что может завесить проджект мейкер. только мертвый цикл наверно. ну так для этого есть решение и без всяких параллельных потоков.
вот код который прервет любой цикл по внешнему прерыванию
C#:
if(((ZennoLab.InterfacesLibrary.ProjectModel.Collections.IContextExt)project.Context).IsInterrupted) throw new Exception("Внешнее прерывание");
if(Global.Variables.IsProjectMaker && !Global.Variables.IsDebugMode)  throw new Exception("Внешнее прерывание");
Как использовать этот код?

У меня возникла необходимость установить таймаут на один с# кубик, иногда оно входит в бесконечный цикл
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
Как использовать этот код?

У меня возникла необходимость установить таймаут на один с# кубик, иногда оно входит в бесконечный цикл
это не для этого. это просто опрос флагов зенки и реакция на них. вставляется в циклы.
 

Fedor5588

Client
Регистрация
04.06.2017
Сообщения
272
Благодарностей
69
Баллы
28
это не для этого. это просто опрос флагов зенки и реакция на них. вставляется в циклы.
О мудрейший птиц феникс, можешь подсказать есть ли способ для моей ситуации
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
О мудрейший птиц феникс, можешь подсказать есть ли способ для моей ситуации
в начале снипета запоминать дату и внутри циклов проверять сколько прошло времени ?
 
  • Спасибо
Реакции: Fedor5588

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)