我想運行方法_doing()
,無限循環直到觸發shutdownEvent
。這基本上是在new Thread()
上執行/啓動的。但我不需要_doSomething
如果它是true
某處。 if (_doSomething)
後應該怎麼辦?下面的代碼片段。謝謝。使用do-while並跳過下一行
private HighResolutionLapseTimer _lapseTimer;
private int _timeToNext
{
get
{
int lapseTime = _lapseTimer.LapseTime();
int next = DO_PERIOD - lapseTime;
if (next > 0)
{
return next;
}
else
{
return 1;
}
}
}
int DO_PERIOD = 60000;
private void _doing()
{
int _nextDoing = DO_PERIOD;
Thread.Sleep(_nextDoing);
do
{
LogInfo("Starting _doing");
lock (this)
{
if (_doSomething)
{
// skip this time because we are currently archiving
}
_doSomething = true;
}
try
{
_lapseTimer.Start();
DoSomethingHere(); //takes long processing
}
catch (Exception ex)
{
LogException(ex);
}
finally
{
lock (this)
{
_nextDoing = (int)_timeToNext;
_doSomething = false;
}
}
} while (!shutdownWaitHandle.WaitOne(_nextDoing, false));
LogInfo("Stopping _doing");
}
似乎你基本上有它;你的代碼有什麼問題? – BradleyDotNET 2014-11-07 01:15:42
老實說,我不知道把什麼放在if語句下面。它在上面評論。前面的代碼使用'Timer'類,所以基本上它只是'return',並且什麼都不做,但是我想將'Timer_Elapsed'事件的實現更改爲單個線程函數,但我不知道如何使用閉環實現它。 – junPac 2014-11-07 01:20:24