试图理解如何在不同的用例中使用方法
Trying to make sense of how to use method in a little different use case
我有一个具有以下签名的方法,
private async Task<SomeClass> SomeMethod(string param)
在代码的某处,我是一个任务数组,我可以使用以下代码,而我将 SomeMethod 的结果添加到任务数组中时没有任何问题。
Task<SomeClass>[] tasks = new Task<SomeClass>[100];
for (int i = 0; i < 100; i++)
{
tasks[i] = SomeMethod(param);
}
但是在另一个用例中,我想等待这个方法并取回结果我可能会也可能不会将其添加到任务数组中。所以在循环中,我有如下代码。
for (int i = 0; i < 100; i++)
{
Task<SomeClass> result = await SomeMethod(param);
// if get back something useful then set tasks[i] to this task
}
问题是使用这段代码,我遇到了以下编译错误。
Error 7 Cannot implicitly convert type 'SomeClass' to
'System.Threading.Tasks.Task'
建议?
public void Test()
{
Task<SomeClass>[] tasks = new Task<SomeClass>[100];
for (int i = 0; i < 100; i++)
{
tasks[i] = SomeMethod(string.Empty);
}
}
private async Task<SomeClass> SomeMethod(object param)
{
return await Task.FromResult<SomeClass>(new SomeClass());
}
for (int i = 0; i < 100; i++)
{
Task<SomeClass> task = SomeMethod(param);
await task;
// if get back something useful then set tasks[i] to this task
task[i] = task;
}
我有一个具有以下签名的方法,
private async Task<SomeClass> SomeMethod(string param)
在代码的某处,我是一个任务数组,我可以使用以下代码,而我将 SomeMethod 的结果添加到任务数组中时没有任何问题。
Task<SomeClass>[] tasks = new Task<SomeClass>[100];
for (int i = 0; i < 100; i++)
{
tasks[i] = SomeMethod(param);
}
但是在另一个用例中,我想等待这个方法并取回结果我可能会也可能不会将其添加到任务数组中。所以在循环中,我有如下代码。
for (int i = 0; i < 100; i++)
{
Task<SomeClass> result = await SomeMethod(param);
// if get back something useful then set tasks[i] to this task
}
问题是使用这段代码,我遇到了以下编译错误。
Error 7 Cannot implicitly convert type 'SomeClass' to 'System.Threading.Tasks.Task'
建议?
public void Test()
{
Task<SomeClass>[] tasks = new Task<SomeClass>[100];
for (int i = 0; i < 100; i++)
{
tasks[i] = SomeMethod(string.Empty);
}
}
private async Task<SomeClass> SomeMethod(object param)
{
return await Task.FromResult<SomeClass>(new SomeClass());
}
for (int i = 0; i < 100; i++)
{
Task<SomeClass> task = SomeMethod(param);
await task;
// if get back something useful then set tasks[i] to this task
task[i] = task;
}