dotnet / dotnet/dotnet-api-docs

When using `ThreadPool.QueueUserWorkItem` with a method that throws an exception, the entire application crashes and exits unexpectedly. This behavior is not documented and can lead to unintended application terminations.

Open
#11,084 1 comment 0 reactions 0 assignees View on GitHub
area-System.Threading untriaged
Dominant language
C#
Stars
949
Forks
1.7k
Avg merge
3d 27m
Merged PRs (30d)
49

Description

### Type of issue

Typo

### Description

[在此处输入反馈]
```
using Microsoft.AspNetCore.Mvc;

namespace WebApplic.Controllers
{
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};

private readonly ILogger _logger;

public WeatherForecastController(ILogger logger)
{
_logger = logger;
}

[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable Get()
{
ThreadPool.QueueUserWorkItem(_ =>
{
throw new Exception("An error occurred.");
});
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
}
```
**Expected behavior**
The exception should be caught and handled appropriately, or at the very least, the documentation should clearly state that unhandled exceptions in `ThreadPool.QueueUserWorkItem` will cause the application to crash.

**Screenshots**
N/A

**Additional context**
This issue can lead to unexpected application crashes and loss of data. It is important to either handle the exception within the `QueueUserWorkItem` method or ensure that the documentation clearly states this behavior to prevent such issues.

**Environment:**
- OS: [e.g., Windows 11]
- .NET version: [e.g., .NET 8.0]
- IDE: [e.g., Visual Studio 2022]

Please update the documentation to reflect this behavior or provide a solution to handle exceptions in `ThreadPool.QueueUserWorkItem` without crashing the application.

Thank you.

### Page URL

https://learn.microsoft.com/zh-cn/dotnet/api/system.threading.threadpool.queueuserworkitem?view=net-8.0&devlangs=csharp&f1url=%3FappId%3DDev17IDEF1%26l%3DZH-CN%26k%3Dk(System.Threading.ThreadPool.QueueUserWorkItem)%3Bk(TargetFrameworkMoniker-.NETFramework%2CVersion%253Dv4.7.2)%3Bk(DevLang-csharp)%26rd%3Dtrue

### Content source URL

https://github.com/dotnet/dotnet-api-docs/blob/main/xml/System.Threading/ThreadPool.xml

### Document Version Independent Id

e13ed79b-e212-1d7a-f939-6086b300a399

### Platform Id

aa4d1ae9-7ae8-c1d8-6d31-f91535257631

### Article author

@dotnet-bot

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.