我必须用很多迭代,矩阵运算等来实现非常复杂的算法。傅里叶级数近似有两个主循环。我想知道什么是实施进度回调的最佳方法。我未来我想在WPF应用程序中使用这个算法,我想实现进度条。如何准备算法使未来的进度条实现容易?算法进度回调
我的想法是这样的:
static void Main(string[] args)
{
Console.Write("Progres... ");
Alg((i) => UpdateProgress(i));
}
public static void UpdateProgress(int iteration)
{
string anim = @"|/-\-";
Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);
Console.Write(anim[iteration%5]);
}
public static void Alg(Action<int> progressCallback)
{
for (int i = 0; i < 100; i++)
{
Thread.Sleep(50);
progressCallback(i);
}
}
进度:操作完成/要运行的操作 – 2013-03-10 21:19:54
这很明显。但我正在寻求别的东西。什么使用委托,Func或什么作为算法的参数。这里最好的选择是什么? – 2013-03-10 21:31:48
您应该能够实现在单独线程上运行的算法,并使用'BackgroundWorker'及其'ProgressChanged'事件更新UI。看看这个链接了解更多信息:http://elegantcode.com/2009/07/03/wpf-multithreading-using-the-backgroundworker-and-reporting-the-progress-to-the-ui/。 – 2013-03-10 22:07:21