Xamarin iOS 和 Android 中的 ConcurrentExclusiveSchedulerPair 失败
ConcurrentExclusiveSchedulerPair in Xamarin iOS and Android fails
有谁知道在 Xamarin iOS 或 Android 项目中使用 ConcurrentExclusiveSchedulerPair 是否有什么特别之处?
目前我有:
private readonly ConcurrentExclusiveSchedulerPair _taskSchedulerPair= new ConcurrentExclusiveSchedulerPair();
public async Task InitializeAsync()
{
await Task.Factory.StartNew(() =>
{
//This code never runs on iOS or Android :-(
//Do work here
},
CancellationToken.None,
TaskCreationOptions.None,
_taskSchedulerPair.ExclusiveScheduler);
}
这一切在 Windows 机器上运行良好,但使用 ExclusiveScheduler 启动的新任务永远不会在 iOS 或 Android 上运行。
想法?
看起来是 not implemented yet。
我确认它不起作用(所有任务根本就没有运行);此单元测试将失败:
[Test]
public void ExclusiveScheduler()
{
var taskSchedulerPair = new ConcurrentExclusiveSchedulerPair (TaskScheduler.Default);
var mre = new ManualResetEvent (true);
var task = Task.Factory.StartNew (() => mre.Set (), CancellationToken.None, TaskCreationOptions.None, taskSchedulerPair.ExclusiveScheduler);
var result = mre.WaitOne (1000);
Assert.IsTrue (result);
Assert.AreEqual (TaskStatus.RanToCompletion, task.Status);
}
有谁知道在 Xamarin iOS 或 Android 项目中使用 ConcurrentExclusiveSchedulerPair 是否有什么特别之处?
目前我有:
private readonly ConcurrentExclusiveSchedulerPair _taskSchedulerPair= new ConcurrentExclusiveSchedulerPair();
public async Task InitializeAsync()
{
await Task.Factory.StartNew(() =>
{
//This code never runs on iOS or Android :-(
//Do work here
},
CancellationToken.None,
TaskCreationOptions.None,
_taskSchedulerPair.ExclusiveScheduler);
}
这一切在 Windows 机器上运行良好,但使用 ExclusiveScheduler 启动的新任务永远不会在 iOS 或 Android 上运行。
想法?
看起来是 not implemented yet。
我确认它不起作用(所有任务根本就没有运行);此单元测试将失败:
[Test]
public void ExclusiveScheduler()
{
var taskSchedulerPair = new ConcurrentExclusiveSchedulerPair (TaskScheduler.Default);
var mre = new ManualResetEvent (true);
var task = Task.Factory.StartNew (() => mre.Set (), CancellationToken.None, TaskCreationOptions.None, taskSchedulerPair.ExclusiveScheduler);
var result = mre.WaitOne (1000);
Assert.IsTrue (result);
Assert.AreEqual (TaskStatus.RanToCompletion, task.Status);
}