Работният процес на Windows се прекратява след крайния срок

Създавам работен поток на Windows (използвайки WCF), който чака безкрайно време, докато потребителят(ите) изпълни някои действия. Използвал съм дейност по диаграма на потока и в края на диаграмата на потока отново го връщам в началото на работния поток, така че работният поток да чака безкрайно, докато се постигне очакваният отговор от потребителя(ите).

Проблемът е, че има краен срок, свързан с всеки работен поток, така че трябва да прекратя работния поток, когато е изтекъл крайният срок. Първоначално си помислих, че ще изложа друга отделна WCF услуга в работния процес, която ще прекрати работния поток само при всяко обаждане до тази услуга. Но когато създадох отделна WCF услуга (SendAndReply Activity), тя не се появи като оперативен договор, когато добавих препратка към услугите на работния поток.

Може ли някой да ми каже как можем да прекратим работния процес, ако падежът е достигнат? Тоест как мога да направя отделен процес за прекратяване на работния процес?


person Sumit    schedule 23.03.2012    source източник


Отговори (2)


Както разбрах вашия работен процес, по-подходящо е да го внедрите като държавна машина. След това можете лесно да приложите изчакване за потребителски вход. Можете да използвате тригер със забавяща дейност, за да прекратите (или да отидете в крайно състояние) за вашата задача. Или можете да използвате изпращане на приемна активност в тригер, за да го изложите като WCF услуга.

И ако използвате system.activities.extensions, можете лесно да използвате дейността DelayUntilDateTime.

person Jayantha Lal Sirisena    schedule 23.03.2012
comment
както разбрах, държавните машини се поемат от диаграмата на потока в WWF4, не е ли така?? - person Sumit; 23.03.2012
comment
Не точно. Но държавната машина е пусната сега. Трябва да инсталирате microsoft.com/download/en/details.aspx? id=11705 тогава можете да използвате държавна машина. Чувствам, че блок-схемата е нещо между последователност wf и държавна машина wf. Но, разбира се, можете да го използвате за вашите изисквания. Но мисля, че държавната машина е по-подходяща. - person Jayantha Lal Sirisena; 23.03.2012
comment
изпрати recive активност в тригер, за да я изложи като WCF услуга., това ми свърши работа като горещ нож в маслото. благодаря много за бързия отговор. - person Sumit; 23.03.2012

Трябва да можете да поставите таймер в работния процес. Има контрола на клона, която изчаква настъпването на едно от две (или повече) събития. Използвайте този контрол, където първото задоволително събитие е действието на потребителя, а второто задоволително събитие е таймер.

person Kirk Broadhurst    schedule 23.03.2012