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();
}
}
}
}