den folgenden Code Gegeben:Ist Wait() auf einem ManualResetEventSlim garantiert, um eine Annullierung zu bewirken?
mre.Wait(cts.Token);
cts.Cancel();
mre.Set();
ist die erste (Anruf zu mre.Wait(cts.Token)
) garantiert eine OperationCanceledException
werfen:
CancellationTokenSource cts = new CancellationTokenSource();
ManualResetEventSlim mre = new ManualResetEventSlim();
und diese beiden gleichzeitig Threads ausführt oder ist es auch möglich, dass es nur zurück?
Mein Darm sagt, ich sollte erwarten, dass entweder (interne Race Condition) passieren. MSDN gibt keine Antwort, es sagt nur "während der Beobachtung des CancellationToken".
Ich hoffe auf eine Antwort mit spezifischen Details, wie und warum.
Ich würde gerne Kommentare wie "Cancel()
und Set()
erwarten, um gleichzeitig auftreten/in beliebiger Reihenfolge und damit beide Fälle, sowieso". Ich bin mir dessen voll bewusst.