C# 多线程
//----控制台程序代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using multithreading;
using System.Threading;
namespace duoxiancheng
{
class Program
{
static void Main(string[] args)
{
//HouseMovingCompany.Instance.Contracts.Add(new Contract { From = "WuDaokou", To = "LinDa Road", Fee = 500 });
//HouseMovingCompany.Instance.Contracts.Add(new Contract { From = "XiDan", To = "WangFujing", Fee = 1000 });
//HouseMovingCompany.Instance.Contracts.Add(new Contract { From = "XiangShan", To = "The Forbidden City", Fee = 10000 });
//while (HouseMovingCompany.Instance.Contracts.Count > 0)
//{
// HouseMovingCompany.Instance.MoveHouse();
//}
HouseMovingCompany.Instance.Contracts.Add(new Contract { From = "五道口", To = "林大道", Fee = 500 });
HouseMovingCompany.Instance.Contracts.Add(new Contract { From = "西单", To = "王府井", Fee = 1000 });
HouseMovingCompany.Instance.Contracts.Add(new Contract { From = "香山", To = "故宫", Fee = 10000 });
Thread thread = null;
while (HouseMovingCompany.Instance.Contracts.Count > 0)
{
thread = new Thread(new ThreadStart(HouseMovingCompany.Instance.MoveHouse));
thread.Start();
}
Console.ReadLine();
}
}
}
//--Contract类
public class Contract
{
public string ID { get; private set; }
public string From { get; set; }
public string To { get; set; }
public decimal Fee { get; set; }
public Contract()
{
this.ID = Guid.NewGuid().ToString();
}
}
//---------HouseMovingCompany 类
public class HouseMovingCompany
{
private static HouseMovingCompany _instance = null;
public static HouseMovingCompany Instance
{
get { return (_instance == null ? _instance = new HouseMovingCompany() : _instance); }
}
public List<Contract> Contracts { get; private set; }
public HouseMovingCompany()
{
this.Contracts = new List<Contract>();
}
//public void MoveHouse()
//{
// if (this.Contracts == null || this.Contracts.Count == 0)
// {
// return;
// }
// Contract contract = contract = this.Contracts[0];
// this.Contracts.RemoveAt(0);
// if (!String.IsNullOrEmpty(contract.From) && !String.IsNullOrEmpty(contract.To))
// {
// //Console.WriteLine("Move the house from {0} to {1}.", contract.From, contract.To);
// Console.WriteLine("时间:{2} 从 {0} 搬家至 {1}.", contract.From, contract.To, System.DateTime.Now.ToString("yyyy-mm-dd hh:mm:ss.ffff"));
// }
// Thread.Sleep(5000);
//}
public void MoveHouse()
{
if (this.Contracts == null || this.Contracts.Count == 0)
{
return;
}
Contract contract = null;
lock (this.Contracts)
{
contract = this.Contracts[0];
this.Contracts.RemoveAt(0);
}
if (!String.IsNullOrEmpty(contract.From) && !String.IsNullOrEmpty(contract.To))
{
Console.WriteLine("时间:{2} 从 {0} 搬家至 {1}.", contract.From, contract.To, System.DateTime.Now.ToString("yyyy-mm-dd hh:mm:ss.ffff"));
}
Thread.Sleep(5000);
}
}