public static RemoteTask Start(Func <CancellationToken, Task> callback, RemoteCancellationToken remoteToken) { if (!RemotingServices.IsObjectOutOfAppDomain(remoteToken)) { return(new RemoteTask(callback(remoteToken.Token))); } // Creates a cancellation token source in this AppDomain, and passes responsibility for cleaning it up to RemoteTask var MyTokenSource = new RemoteCancellationTokenSource(remoteToken); return(new RemoteTask(callback(MyTokenSource.Token), MyTokenSource)); }
internal RemoteCancellationTokenSource(RemoteCancellationToken remoteToken) { Debug.Assert(RemotingServices.IsObjectOutOfAppDomain(remoteToken), "Attempt to unwrap remote token inside the owning AppDomain"); _Token = remoteToken; }
public static RemoteTask <TResult> Start <TResult>(Func <CancellationToken, Task <TResult> > callback, RemoteCancellationToken remoteToken) { if (!RemotingServices.IsObjectOutOfAppDomain(remoteToken)) { return(new RemoteTask <TResult>(callback(remoteToken.Token))); } var MyTokenSource = new RemoteCancellationTokenSource(remoteToken); return(new RemoteTask <TResult>(callback(MyTokenSource.Token), MyTokenSource)); }