【发布时间】:2012-02-15 23:09:12
【问题描述】:
我正在处理这个示例,但我无法对回调和线程进行网格划分。
我想要的是这个。
1) 按下按钮
2)启动进度条运行
3) 调用一个新线程来执行一些长时间运行的进程
4) 长时间运行的进程回调应该会触发进度条停止。
下面我有一些东西......虽然 DoSomethingInThread 的回调参数以 null 形式出现。 StopProgressBar() 作用于 ProgressBar 控件,所以它不能是静态的。
static bool done;
static readonly object locker = new object();
static ParameterizedThreadStart threadStarter = new ParameterizedThreadStart(DoSomethingInThread);
private Thread workerThread = new Thread(threadStarter);
public delegate void StopProgressBarCallback()
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
StartProgressBar();
workerThread.Start();
}
static void DoSomethingInThread(object callback)
{
StopProgressBarCallback stopper = callback as StopProgressBarCallback;
lock (locker)
{
Thread.Sleep(5 * 1000);
}
stopper();
}
private void StartProgressBar()
{
progressBar1.MarqueeAnimationSpeed = 30;
progressBar1.Style = ProgressBarStyle.Marquee;
}
public void StopProgressBar()
{
progressBar1.Style = ProgressBarStyle.Continuous;
}
【问题讨论】:
标签: c# multithreading callback