我的构造函数除了其他东西之外还调用了另一种方法DoWork
public MyTask(TaskAction action)
{
DoWork(action);
}
DoWork方法转到另一种方法Calc(2)
private void Calc (int 2){
... calc and save result into file
}
如何提醒MyTask Calc已完成并让MyTask继续进行。
P.S。我可以每隔几秒阅读一次硬盘,以便查看带有结果的文件是否保存并继续进一步继续,但我认为有更好的方法。
答案 0 :(得分:0)
BackgroundWorker
课程可让您轻松管理异步工作。
BackgroundWorker _worker = new BackgroundWorker();
public Cnt()
{
InitializeComponent();
_worker.DoWork += WorkerOnDoWork;
_worker.RunWorkerCompleted += WorkerOnRunWorkerCompleted;
//start your work
_worker.RunWorkerAsync();
}
private void WorkerOnRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//Worker completed event
}
private void WorkerOnDoWork(object sender, DoWorkEventArgs e)
{
//Do
}
答案 1 :(得分:0)
有很多方法可以做到这一点。最新推荐的是使用任务
Task taskA = new Task(() => { Console.WriteLine("Task A started"); });
taskA.ContinueWith((ss) => { Console.WriteLine("Task A finished"); });
taskA.Start();
http://msdn.microsoft.com/en-us/library/ee372288(v=vs.110).aspx
这样你可以根据需要阻止当前线程。
另一种方法是BackGroundWorker类
此外,您可以使用像这样的自定义回调
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DoWorkA(DoWorkFinished);
Console.Read();
}
private static void DoWorkA(Action whatToDoWhenFinished)
{
Console.WriteLine("Doing something");
whatToDoWhenFinished();
}
private static void DoWorkFinished()
{
Console.WriteLine("Doing something Else");
}
}
}