C# 多线程

2021-02-22  本文已影响0人  寻找无名的特质

如果涉及到并行运行的任务,可以使用多线程,比如在后台处理消息,前台只要把消息推送到队列中,后台只要在循环中检查消息队列进行处理就可以了。需要注意的是前台后台之间共享的变量不要发生冲突。下面是多线程使用的简单示例。后台线程代码如下:

using System;
using System.Threading;

namespace TestTask
{
    public class MyTask
    {
        private Thread mythread;
        public string Message { get; set; }
        private string LastMessage { get; set; }
        public Action<string> MyAction { get; set; }
        public void Start()
        {
            mythread = new Thread(DoWork);
            mythread.IsBackground = true;
            mythread.Start();
        }

        private void DoWork()
        {
            while (true)
            {
                if (!string.IsNullOrEmpty(Message))
                {
                    if (Message != LastMessage)
                    {
                       MyAction(Message);
                       LastMessage = Message;
                    }
                    
                }
            }
        }

       
    }
}

前台的代码:

using System;

namespace TestTask
{
    class Program
    {
        static void Main(string[] args)
        {
            var myTask = new MyTask();
            myTask.MyAction = s => Console.WriteLine(s);
            myTask.Start();
            var message = Console.ReadLine();
            while (message != "exit")
            {
                myTask.Message = message;
                message = Console.ReadLine();
            }
        }
    }
}

上一篇下一篇

猜你喜欢

热点阅读