相关疑难解决方法(0)

启动和停止(强制)线程作业

我想知道一种正确的方法来启动和停止强制和非强制的线程作业.这是停止线程的正确方法吗?

    public class ProcessDataJob : IJob
    {
        private ConcurrentQueue<byte[]> _dataQueue = new ConcurrentQueue<byte[]>();
        private volatile bool _stop = false;
        private volatile bool _forceStop = false;
        private Thread _thread;
        private int _timeOut = 1000;

        public void Start()
        {
            _stop = false;
            _forceStop = false;

            _thread = new Thread(ProcessData);
            _thread.Start();
        }

        private void ProcessData()
        {
            while (!_stop || _dataQueue.Count > 0)
            {
                if(_forceStop) return;

                byte[] data;
                if(_dataQueue.TryDequeue(data))
                {
                   //Process data
                   //.....//
                }
            }
        }

        public void Stop(bool force)
        {
            _stop = true; …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading

3
推荐指数
1
解决办法
8096
查看次数

标签 统计

.net ×1

c# ×1

multithreading ×1