Loop in Task durchsteppen!
-
Hallo Leute,
ich habe folgendes, einen Task welcher eine Berechnung asynchron durchführt, die Berechnungschritte werden in einer Loop berechnet (Pseudo):
private Task<ResponseResult> DoCalc(RequestData requestData) { return Task.Factory.StartNew( (requestData) => { while (true) { // hier wird berechnet: _success= _calc.RunSingleCycle(); if(_success) break; } }, requestData , ct); }
nun möchte ich aber die einzelnen Berechnungsschritte "durchsteppen" um den berechnung testen zu können, und habe folgendes gemacht:
private readonly SemaphoreSlim _syncWaitCycle = new SemaphoreSlim(0); private readonly SemaphoreSlim _syncWaitCycle2 = new SemaphoreSlim(0); private Task<ResponseResult> DoCalc(RequestData requestData) { return Task.Factory.StartNew( (requestData) => { while (true) { // hier wird berechnet: _syncWaitCycle.Wait(-1); //HIER warten auf näcshten schritt _success= _calc.RunSingleCycle(); _syncWaitCycle2.Release(); //Hier feedback, wenn schritt berechnet wurde if(_success) break; } }, requestData , ct); } //Berechnung schritt durchführen public bool RunSingleCycle() { _syncWaitCycle.Release(); _syncWaitCycle2.Wait(-1); return _success; }
ich finde das aber keine schöne Lösung, habt ihr ne Idee??