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

  • Автор темы Автор темы alex1988
  • Дата начала Дата начала

alex1988

Client
Регистрация
13.07.2014
Сообщения
424
Реакции
181
Баллы
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
Лучше предложите просто сделать возможность указать тайм аут выполнения потока. А как уж это реализовать в коде самой zenno - думаю разрабы без вас разберутся))
 
Лучше предложите просто сделать возможность указать тайм аут выполнения потока. А как уж это реализовать в коде самой zenno - думаю разрабы без вас разберутся))

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

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

У меня возникла необходимость установить таймаут на один с# кубик, иногда оно входит в бесконечный цикл
это не для этого. это просто опрос флагов зенки и реакция на них. вставляется в циклы.
 
О мудрейший птиц феникс, можешь подсказать есть ли способ для моей ситуации
в начале снипета запоминать дату и внутри циклов проверять сколько прошло времени ?
 
  • Спасибо
Реакции: Fedor5588

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