我有这个帖子,我不希望它在完成一个函数时自行终止它。相反,我希望之后再给它一个功能。 `
android.content.DialogInterface.OnKeyListener
答案 0 :(得分:1)
您可以在线程委托中调用两个函数,如
t1 = new Thread(() =>{ test();test2();});
如果要重复执行测试代码,则可以在Test()
中使用循环。如果您想在任何间隔后重复执行某些操作,也可以使用Timer。
如果您想使用已创建的线程来节省线程创建成本,那么您可以使用ThreadPool
许多应用程序创建花费大量时间的线程 睡眠状态,等待事件发生。其他线程可能 进入睡眠状态只是为了周期性地唤醒以进行轮询 更改或更新状态信息。线程池使您可以 通过为应用程序提供池来更有效地使用线程 系统管理的工作线程MSDN。
答案 1 :(得分:0)
如果您使用的是.Net 4或更高版本,则可以使用Task
代替线程,然后使用Task.ContinueWith()
实现此目的。
以下是一个例子:
using System;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
static class Program
{
private static void Main()
{
var task = Task.Run(() => task1());
task = task.ContinueWith(antecedant => task2());
Console.WriteLine("Waiting for composite task to complete.");
task.Wait();
Console.WriteLine("Composite Task completed.");
}
private static void task1()
{
Console.WriteLine("Starting task 1");
Thread.Sleep(2000);
Console.WriteLine("Ending task 1");
}
private static void task2()
{
Console.WriteLine("Starting task 2");
Thread.Sleep(2000);
Console.WriteLine("Ending task 2");
}
}
}
如果您使用此方法,则无需等待第一个任务完成,然后再将其分配给另一个任务。