亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

如何優雅地終止c#中的線程而不使用abort

c#
小樊
85
2024-08-26 20:49:12
欄目: 編程語言

在C#中,盡量避免使用Thread.Abort()方法來終止線程,因為這可能導致資源泄漏和其他不可預測的問題

  1. 使用標志變量:
private volatile bool _stopRequested;

public void StopThread()
{
    _stopRequested = true;
}

public void MyThreadMethod()
{
    while (!_stopRequested)
    {
        // 執行任務
    }
}
  1. 使用CancellationToken
private CancellationTokenSource _cts;

public void StartThread()
{
    _cts = new CancellationTokenSource();
    var token = _cts.Token;

    Task.Factory.StartNew(() =>
    {
        while (!token.IsCancellationRequested)
        {
            // 執行任務
        }
    }, token);
}

public void StopThread()
{
    _cts.Cancel();
}
  1. 使用ManualResetEventAutoResetEvent
private ManualResetEvent _stopEvent;

public void StartThread()
{
    _stopEvent = new ManualResetEvent(false);

    ThreadPool.QueueUserWorkItem(_ =>
    {
        while (!_stopEvent.WaitOne(0))
        {
            // 執行任務
        }
    });
}

public void StopThread()
{
    _stopEvent.Set();
}

在這些示例中,我們使用了不同的方法來通知線程何時應該停止。這些方法比直接調用Thread.Abort()更加優雅,因為它們允許線程在適當的時候自然地停止,從而避免了資源泄漏和其他問題。

0
云和县| 滁州市| 久治县| 永登县| 湛江市| 水富县| 上高县| 丰台区| 新营市| 西安市| 台前县| 洛南县| 呼伦贝尔市| 中卫市| 高安市| 同心县| 客服| 新邵县| 萨嘎县| 阿拉善左旗| 罗甸县| 牡丹江市| 中西区| 繁峙县| 克东县| 遂平县| 夏津县| 长乐市| 闻喜县| 广西| 黄冈市| 兖州市| 罗源县| 阿拉尔市| 乐都县| 桐梓县| 郎溪县| 靖边县| 宁乡县| 巴楚县| 孙吴县|