如果这是异步的,它将返回没有错误,为什么它在没有异步的情况下抛出错误,async在这个操作中毫无价值.
public Task<int> countUp()
{
string compare = txtTag.Text;
int count = 0;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (compare == dataGridView1[0, i].Value.ToString())
{
BeginInvoke(new Action(() =>
{
count++;
txtCount.Text = count.ToString();
}));
}
}
return count;
}
Run Code Online (Sandbox Code Playgroud)
spe*_*der 21
好吧,你可以返回一个完成的任务:
return Task.FromResult(count);
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/hh194922.aspx
为什么你想要返回一个任务有点神秘.从概念上讲,任务代表了一种承诺,即某种事情将在未来的某个时间发生.在你的情况下,它已经发生了,所以使用一个任务是完全没有意义的.
由于错误明确指出,你不能返回int一个Task<int>.(除非你把它变成一个async方法,它创建一个编译时魔法Task<T>.
如果您的方法不是异步的,那么您不应该首先返回a Task<T>.
相反,只需int直接返回.
如果由于某种原因,您需要返回a Task<T>,则可以调用Task.FromResult()以创建具有给定值的已完成任务.