deadlock auch nach Verwendung von ConfigureAwait (false) in Asp.Net flow
Ich treffe Deadlock auch nach der Verwendung vonConfigureAwait(false)
, unten ist der Beispielcode.
Wie in der Probehttp: //blog.stephencleary.com/2012/02/async-and-await.htm (#Avoding Context), dies sollte nicht Deadlock getroffen haben.
Dies ist meine Klasse:
public class ProjectsRetriever
{
public string GetProjects()
{
...
var projects = this.GetProjects(uri).Result;
...
...
}
private async Task<IEnumerable<Project>> GetProjects(Uri uri)
{
return await this.projectSystem.GetProjects(uri, Constants.UserName).ConfigureAwait(false);
}
}
Diese Klasse stammt aus einer gemeinsam genutzten Bibliothek:
public class ProjectSystem
{
public async Task<IEnumerable<Project>> GetProjects(Uri uri, string userName)
{
var projectClient = this.GetHttpClient<ProjectHttpClient>(uri);
var projects = await projectClient.GetProjects();
// code here is never hit
...
}
Works, wenn ich ConfigureAwait (false) hinzufüge, um auf den Aufruf in der gemeinsam genutzten Bibliothek zu warten, in der der HttpClient-Aufruf erfolgt:
public class ProjectSystem
{
public async Task<IEnumerable<Project>> GetProjects(Uri uri, string userName)
{
var projectClient = this.GetHttpClient<ProjectHttpClient>(uri);
var projects = await projectClient.GetProjects().ConfigureAwait(false);
// no deadlock, resumes in a new thread.
...
}
Ich habe alle gefundenen Blogs durchgesehen. Der einzige Unterschied ist, dass ConfigureAwait (false) mit httpClient.AsyncApi () funktionier
Bitte helfen Sie zu klären !!!