【发布时间】:2019-02-20 17:40:37
【问题描述】:
这是我的C# 函数
public async Task GetAttendance(IEnumerable<Zone> zones)
{
try
{
foreach (var zone in zones)
{
var req = new AttendeeRequestTO(zone.StartTime, zone.EndTime, zone.ZoneId.ToString(), accessToken);
//THROWING COMPILE TIME ERROR
zone.AttendanceCount = Task.Factory.StartNew(() => _vClient.GetAttendeesCount(req));
}
}
catch (Exception ex)
{
}
}
错误
错误 CS0029 无法将类型“System.Threading.Tasks.Task>”隐式转换为“int?”
我不想为每个任务应用 await,因为每个任务都是独立的,我希望每个任务在自己的上下文中运行而不等待任何其他任务。
我的意思是
任务 T1 - 转到 API,获取值并设置计数
任务 T2 - 转到 API,获取值并设置计数
任务 T3 - 转到 API,获取值并设置计数
T2 不应等待 T1 完成,T3 不应等待 T2 完成等等。
如何将每个任务的输出值分配给zone.AttendanceCount?
【问题讨论】:
-
您需要提供有关您的问题的更多信息,您得到的错误是什么? AttendanceCount 的类型是什么?
-
如果你真的需要为此使用单独的任务(线程),你可以有一个区域变量的列表,当你遍历循环时,你以异步/等待风格为每个变量分配值..
-
@ZackISSOIR。添加了错误详情
-
如果您的代码不是异步的,为什么还要使用
async? -
你的
await在哪里?您还可以附上完整的异常消息吗?有一个“>”,我假设您已经从System.Threading.Tasks.Task<int>修剪了数据类型
标签: c# asp.net-core task-parallel-library