我有一些异步功能的接口。一些实现该接口的类没有什么可等待的,而有些则可能会抛出。所有警告都有些令人讨厌。
在异步功能中不使用等待时。
是否可以禁止显示该消息?
public async Task<object> test()
{
throw new NotImplementedException();
}
警告CS1998:此异步方法缺少“等待”运算符,将运行
同步地。考虑使用“ await”运算符等待
非阻塞API调用,或“等待Task.Run(...)”以执行CPU绑定的工作
在后台线程上。
参考方案
我有一些异步功能的接口。
我相信方法返回Task
。 async
是实现细节,因此无法应用于接口方法。
一些实现该接口的类没有什么可等待的,而有些则可能会抛出。
在这些情况下,您可以利用async
是实现细节的事实。
如果您没有要await
的内容,则只需返回Task.FromResult
:
public Task<int> Success() // note: no "async"
{
... // non-awaiting code
int result = ...;
return Task.FromResult(result);
}
在抛出NotImplementedException
的情况下,该过程比较罗word:
public Task<int> Fail() // note: no "async"
{
var tcs = new TaskCompletionSource<int>();
tcs.SetException(new NotImplementedException());
return tcs.Task;
}
如果您有很多抛出NotImplementedException
的方法(它本身可能表明某些设计级别的重构会很好),则可以将冗长的内容包装到一个帮助器类中:
public static class TaskConstants<TResult>
{
static TaskConstants()
{
var tcs = new TaskCompletionSource<TResult>();
tcs.SetException(new NotImplementedException());
NotImplemented = tcs.Task;
}
public static Task<TResult> NotImplemented { get; private set; }
}
public Task<int> Fail() // note: no "async"
{
return TaskConstants<int>.NotImplemented;
}
helper类还减少了GC否则必须收集的垃圾,因为具有相同返回类型的每个方法都可以共享其Task
和NotImplementedException
对象。
我还有其他几个"task constant" type examples in my AsyncEx library。
Java中的“ <<”运算符 - java最喜欢的语句来自Java的Character类:(1 << Character.PARAGRAPH_SEPARATOR)) >> type PARAGRAPH_SEPARATOR是字节,type是整数。这句话中的操作员,他们做什么?如何以及在哪里可以使用这些运算符?这是oracles java.lang.Character文档。该类中…
当我运行python代码时,它说“ <<目前是意外情况” - python基本上,这是我们合作者的python代码,用于生成网格,该网格是在Linux环境下开发的。我使用Cygwin在Windows上运行此代码。麻烦部分如下。 BiV_temp.geo也是一个python脚本。因此,命令是用预定义的数字和文件名替换脚本BiV_temp.geo中的字符串。os.system('cp BiV_fiber.geo BiV_te…
LeetCode题解拼凑硬币小Q十分富有,拥有非常多的硬币,小Q拥有的硬币是有规律的,对于所有的非负整数K,小Q恰好各有两个面值为2^k的硬币,所有小Q拥有的硬币就是1,1,2,2,4,4,8,8.....小Q有一天去商店购买东西需要支付n元钱,小Q想知道有多少种方案从他拥有的硬币中选取一些拼凑起来恰好是n元(如果两种方案某个面值的硬币选取的个数不一样就考虑为不一样的方案)输入:输入包…
Python lmfit约束:a <b <c - python我在Python中使用lmfit来拟合一些数据,其中包括拟合变量a,b和c。我需要确保a <b <c。我发现http://cars9.uchicago.edu/software/python/lmfit_MinimizerResult/constraints.html谈到需要定义为不等式和设置虚拟变量的约束。例如,如果我想要a + b <=…
将谓词<T>转换为Func <T,bool> - c#我有一个包含成员Predicate的类,希望在Linq表达式中使用该类:using System.Linq; class MyClass { public bool DoAllHaveSomeProperty() { return m_instrumentList.All(m_filterExpression); } private IEnumerable&…