Shim类中无法找到参数包含CancellationTokenSource的方法,这句话有点绕口,看例子。
一、代码
public class CancellationDemo
{
public int DoSomething(CancellationTokenSource cts)
{
if (cts.IsCancellationRequested)
{
return 0;
}
else
{
return 1;
}
}
}
DoSomething这个方法的参数包含CancellationTokenSource。
二、问题
但是在ShimCancellationDemo.AllInstances里面却找不到DoSomething这个方法,如下图所示。
三、解决方案
百思不得其解,后来发现是是微软不靠谱,因为种种原因,程序集还用的是4.0的framework。原来4.0的framework不支持参数带CancelllationTokenSource这种方法的Shim。
把程序集的.net framework版本升级到4.5以后就OK了。