【发布时间】:2015-04-01 03:21:59
【问题描述】:
我正在使用 .Net 4.0 任务类来使用线程在后台下载 google 网页。问题是如果我的函数有 1 个或多个参数,应用程序将无法编译(idk 如何传递该参数)。所以我想知道如何在 DoWork() 方法中传递函数的参数。
这行得通:
public Task<String> DoWork() {
//create task, of which runs our work of a thread pool thread
return Task.Factory.StartNew<String>(this.DownloadString);
}
private String DownloadString()
{
using (var wc = new WebClient())
return wc.DownloadString("http://www.google.com");
}
这不是:
public Task<String> DoWork() {
//create task, of which runs our work of a thread pool thread
return Task.Factory.StartNew<String>(this.DownloadString);
}
private String DownloadString(String uri)
{
using (var wc = new WebClient())
return wc.DownloadString(uri);
}
错误是:
cannot convert from 'method group' to 'System.Func<string>'
提前谢谢你!
【问题讨论】:
-
您的第二个 sn-p 应该如何知道要下载什么?你在哪里传递
uri参数? -
@Blorgbeard,问题是,我不知道怎么通过。
-
嗯,这就是编译器错误。你的
DownloadString不是Func<string>,它是Func<string,string>。 Task.StartNew 期待前者,而不是后者。
标签: c# wpf .net-4.0 task-parallel-library