Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit bd8a9dc

Browse files
committed
Remove dupe code
Might as well use the VisualStudio Threading library, since we're already bound to it because of the main thread switcher.
1 parent 2760d87 commit bd8a9dc

File tree

1 file changed

+3
-32
lines changed

1 file changed

+3
-32
lines changed

src/GitHub.Exports/Helpers/ThreadingHelper.cs

Lines changed: 3 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using System.Runtime.CompilerServices;
55
using System;
66
using static Microsoft.VisualStudio.Threading.JoinableTaskFactory;
7-
using System.Threading;
7+
using static Microsoft.VisualStudio.Threading.AwaitExtensions;
88

99
namespace GitHub.Helpers
1010
{
@@ -62,7 +62,7 @@ public AwaitableWrapper(MainThreadAwaitable awaitable)
6262

6363
public AwaitableWrapper(TaskScheduler scheduler)
6464
{
65-
getAwaiter = () => new AwaiterWrapper(new BackgroundThreadAwaiter(scheduler));
65+
getAwaiter = () => new AwaiterWrapper(new TaskSchedulerAwaiter(scheduler));
6666
}
6767

6868
public IAwaiter GetAwaiter() => getAwaiter();
@@ -88,7 +88,7 @@ public AwaiterWrapper(MainThreadAwaiter awaiter)
8888
getResult = () => awaiter.GetResult();
8989
}
9090

91-
public AwaiterWrapper(BackgroundThreadAwaiter awaiter)
91+
public AwaiterWrapper(TaskSchedulerAwaiter awaiter)
9292
{
9393
isCompleted = () => awaiter.IsCompleted;
9494
onCompleted = c => awaiter.OnCompleted(c);
@@ -101,34 +101,5 @@ public AwaiterWrapper(BackgroundThreadAwaiter awaiter)
101101

102102
public void GetResult() => getResult();
103103
}
104-
105-
struct BackgroundThreadAwaiter : INotifyCompletion
106-
{
107-
readonly TaskScheduler scheduler;
108-
109-
public bool IsCompleted
110-
{
111-
get
112-
{
113-
bool isThreadPoolThread = Thread.CurrentThread.IsThreadPoolThread;
114-
return (scheduler == TaskScheduler.Default & isThreadPoolThread) || (scheduler == TaskScheduler.Current && TaskScheduler.Current != TaskScheduler.Default);
115-
}
116-
}
117-
118-
public BackgroundThreadAwaiter(TaskScheduler scheduler)
119-
{
120-
Guard.ArgumentNotNull(scheduler, nameof(scheduler));
121-
this.scheduler = scheduler;
122-
}
123-
124-
public void OnCompleted(Action continuation)
125-
{
126-
Task.Factory.StartNew(continuation, CancellationToken.None, TaskCreationOptions.None, scheduler);
127-
}
128-
129-
public void GetResult()
130-
{
131-
}
132-
}
133104
}
134105
}

0 commit comments

Comments
 (0)