我正在制作一个管理图书馆的应用程序。目前我正在制作书籍研究的代码,我刚刚遇到了一个问题。我已经创建了一个处理此研究的线程,以及处理剩余执行的线程。我问自己,Thread有可能管理多种方法吗?如果是这样,你怎么能这样做,因为你只能在Thread的声明中放入一个方法。例如,当用户按下搜索按钮(在menubox中)时,我只希望应用程序(通过我的researchThread)转到url,运行goToUrl()方法。然后,当用户按下搜索按钮时(在写完书的keyWord之后),我希望同一个线程运行另一个方法(search()方法)。因为我不想为每个功能创建一千个线程(并且我认为这不是正确的解决方案),我该如何处理这种情况?提前谢谢。
答案 0 :(得分:2)
使用Task类而不是线程。不必要地防止使用线程。使用Tasks将运行代码异步。您还可以使用Async and Await个关键字。
public void Start()
{
//Create Task with parameter
Task search = new Task(() => new Action<int>(SomeSearchMethod)(4));
// Create Normal Task
Task download = new Task(SomeDownloadMethod);
// Create Task with Return value
Task<string> proccessString = Task.FromResult(SomeProcessing());
MessageBox.Show(proccessString.Result);
// Start Task
search.Start();
download.Start();
// Wait untill task finisht
search.Wait();
download.Wait();
/* or for both tasks*/
Task.WaitAll();
}
private void SomeDownloadMethod()
{
//logic
}
private void SomeSearchMethod(int value)
{
MessageBox.Show("Parameter Search" + value.ToString());
}
private string SomeProcessing()
{
return "Proccess";
}