我從來不必多次使用線程 - 只有少數幾次。但今天,我很無聊,想和他們一起玩,並嘗試建立一種理解。它看起來像BackgroundWorkerThread是一件好事...所以,我試圖做一個控制檯應用程序,只需5秒5次寫'滴答'。這就是我想出的:簡單的線程問題
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
BackgroundWorker bw = new BackgroundWorker();
AlarmClock ac = new AlarmClock(5);
bw.DoWork += ac.StartAlarm;
bw.RunWorkerAsync(5);
bool run = true;
while(run)
{
run = bw.IsBusy;
}
Console.WriteLine("Finished!!");
Console.WriteLine("Press a key...");
Console.ReadKey();
}
}
public class AlarmClock
{
private int noOfTicks;
public AlarmClock (int noOfTicks)
{
this.noOfTicks = noOfTicks;
}
public void StartAlarm(object sender, DoWorkEventArgs e)
{
DateTime start = DateTime.Now;
Console.WriteLine("Alarm set to tick ever 5 seconds.");
int ticks = 0;
bool runMe = true;
while (runMe)
{
if (DateTime.Now.Second % 5 == 0)
{
Console.WriteLine("Tick..");
ticks++;
Thread.Sleep(1000);
}
runMe = ticks < noOfTicks;
}
Console.WriteLine("Aboring thread.");
}
}
}
但它似乎凌亂。任何人都可以幫助我向我展示它應該如何完成?