【发布时间】:2014-08-13 13:59:55
【问题描述】:
好的,如下所示
public MainWindow()
{
CheckCrawlURLs.func_StartCrawlingWaitingUrls();
}
但是这在下面不起作用
public MainWindow()
{
Task.Factory.StartNew(() =>
{
CheckCrawlURLs.func_StartCrawlingWaitingUrls();
});
}
以下是两个示例中执行的类
public static class CheckCrawlURLs
{
public static void func_StartCrawlingWaitingUrls()
{
PublicStaticFunctions.AddMsgToEvents("Checking waiting crawling urls process started");
System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(func_CheckWaitingUrls);
dispatcherTimer.Interval = new TimeSpan(0, 0, 5);
dispatcherTimer.Start();
}
private static void func_CheckWaitingUrls(object sender, EventArgs e)
{
PublicStaticFunctions.AddMsgToMoreCommonEvents("Checking waiting to crawl urls...");
List<string> lstStartCrawling = CrawlURLDB.func_ReturnNextCrawlLinks();
PublicStaticFunctions.AddMsgToMoreCommonEvents("Number of links to start crawlin: " + lstStartCrawling.Count);
}
}
所以我的问题是这里的逻辑是什么?
在第二个任务工厂启动时,func_CheckWaitingUrls 没有运行。
我应该使用哪一个?
【问题讨论】:
-
反之亦然,使用计时器启动任务。通常需要一些最小的联锁,因此当上一次调用尚未完成时,您不会再次启动任务。或者在 UI 消失时运行。
标签: c# wpf task-parallel-library task dispatchertimer