我有一個場景,我必須在學生列表中並行/獨立地運行學生列表。但是,當我用下面的代碼運行這些程序時,程序沒有正確完成就結束了。C#等待進程毫無例外地退出
public async Task ProcessStudents()
{
var students = await GetStudentsAsync().ConfigureAwait(false);
ProcessSingleStudent(students);
}
private static ProcessSingleStudent(IEnumerable<StudentModel> students)
{
students.ForEach(async student =>
{
await ValidateSingleStudentAsync(student).ConfigureAwait(false);
}
}
private async Task ValidateSingleStudentAsync(StudentModel student)
{
//Do some validations here
if(validate)
{
var updated = await UpdateStudentAsync(student).configureAwait(false); //<== This cause issue
}
}
當我看到UpdateStudentAsync
造成的問題,如果有F10
去這個方法不返回任何東西,控制檯應用程序停止。即使我把每個電話都撥打try-catch
我什麼都找不到。如果我進入每個調試點,我會得到預期的結果。
無法理解問題出在哪裏。
哪裏是'UpdateStudentAsync'的代碼? –
請分享調用'ValidateSingleStudentAsync'的代碼,並給我們提供關於主應用程序的更多信息,這意味着:如果'ValidateSingleStudentAsync'運行在臨時上下文中,則運行在Windows Form App或Console App上 –
This是你需要的https://stackoverflow.com/a/39174582/782754 –