-
Notifications
You must be signed in to change notification settings - Fork 147
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
VSTHRD103 is produced inside of ContinueWith when passing task.Result as an argument for async function. #1125
Comments
tip, @MaximTrushin: use 3 backticks in a row around your multi-line code snippets so github formats them properly. Adding a |
Can you include the actual emitted warning? I'm surprised that VSTHRD103 is doing this because I thought that was the job of VSTHRD002. |
This is the emitted warning: [VSTHRD103] Result synchronously blocks. Use await instead. For some reason, I can't reproduce the issue when using a small console application or library assembly. I see it happening only in bigger projects. |
I still see this in version 17.11.20 and can repeat it with a small class: namespace VSTHRD103;
public sealed class VSTHRD103
{
public static Task<Thing> CreateAsync() => Task.FromResult(new Thing());
public static Task<Thing> CreateWithNameAsync() => CreateAsync().ContinueWith(t => t.Result.EnsureNameAsync("Name"), TaskScheduler.Default).Unwrap();
}
public sealed class Thing
{
public string? Name { get; private set; }
public Task<Thing> EnsureNameAsync(string name)
{
Name = name;
return Task.FromResult(this);
}
} |
Your unit test with a I don't see any code in the actual Analyzer making exemptions when called from inside a |
VS 2022 v17.4.2:
Steps to Reproduce:
Try to compile the following code:
The assignment to r1 produces the VSTHRD103, but the assignment to r2 doesn't.
Expected Behavior:
The warning must not be produced because the task is always completed when the lambda defined in ContinueWith is called.
Actual Behavior:
VSTHRD103 is produced inside of ContinueWith when passing task.Result as an argument for async function.
The text was updated successfully, but these errors were encountered: