Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Revert fcbb571 and implement it differently.

The commit had the good idea but since some values of the enumeration overlap it broke the correct behavior. Instead we now turn off the extra options and use the previous way to check.
  • Loading branch information...
commit 6623fc543d66d06121d7c7cfbe9f5bfa3ed8cf3d 1 parent 1e38c9d
@garuma garuma authored
View
24 mcs/class/corlib/System.Threading.Tasks/Task.cs
@@ -283,26 +283,32 @@ bool ContinuationStatusCheck (TaskContinuationOptions kind)
int kindCode = (int)kind;
if (kindCode >= ((int)TaskContinuationOptions.NotOnRanToCompletion)) {
+ // Remove other options
+ kind &= ~(TaskContinuationOptions.PreferFairness
+ | TaskContinuationOptions.LongRunning
+ | TaskContinuationOptions.AttachedToParent
+ | TaskContinuationOptions.ExecuteSynchronously);
+
if (status == TaskStatus.Canceled) {
- if ((kind & TaskContinuationOptions.NotOnCanceled) > 0)
+ if (kind == TaskContinuationOptions.NotOnCanceled)
return false;
- if ((kind & TaskContinuationOptions.OnlyOnFaulted) > 0)
+ if (kind == TaskContinuationOptions.OnlyOnFaulted)
return false;
- if ((kind & TaskContinuationOptions.OnlyOnRanToCompletion) > 0)
+ if (kind == TaskContinuationOptions.OnlyOnRanToCompletion)
return false;
} else if (status == TaskStatus.Faulted) {
- if ((kind & TaskContinuationOptions.NotOnFaulted) > 0)
+ if (kind == TaskContinuationOptions.NotOnFaulted)
return false;
- if ((kind & TaskContinuationOptions.OnlyOnCanceled) > 0)
+ if (kind == TaskContinuationOptions.OnlyOnCanceled)
return false;
- if ((kind & TaskContinuationOptions.OnlyOnRanToCompletion) > 0)
+ if (kind == TaskContinuationOptions.OnlyOnRanToCompletion)
return false;
} else if (status == TaskStatus.RanToCompletion) {
- if ((kind & TaskContinuationOptions.NotOnRanToCompletion) > 0)
+ if (kind == TaskContinuationOptions.NotOnRanToCompletion)
return false;
- if ((kind & TaskContinuationOptions.OnlyOnFaulted) > 0)
+ if (kind == TaskContinuationOptions.OnlyOnFaulted)
return false;
- if ((kind & TaskContinuationOptions.OnlyOnCanceled) > 0)
+ if (kind == TaskContinuationOptions.OnlyOnCanceled)
return false;
}
}
View
3  mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs
@@ -162,7 +162,8 @@ public void ContinueWithOnAbortedTestCase()
Task t = new Task(delegate { taskResult = true; }, src.Token);
src.Cancel ();
- Task cont = t.ContinueWith (delegate { result = true; }, TaskContinuationOptions.OnlyOnCanceled);
+ Task cont = t.ContinueWith (delegate { result = true; },
+ TaskContinuationOptions.OnlyOnCanceled | TaskContinuationOptions.ExecuteSynchronously);
t.Start();
cont.Wait();
Please sign in to comment.
Something went wrong with that request. Please try again.