我想在Windows Phone 7中的特定时间之后有什么办法可以执行某个功能。例如,请在android中查看此代码:
mRunnable=new Runnable()
{
@Override
public void run()
{
// some work done
}
现在是另一个功能
public void otherfunction()
{
mHandler.postDelayed(mRunnable,15*1000);
}
现在,在执行 otherfunction() 15秒后,将执行上层代码中的工作。 我想知道这在Windows Phone 7中是否也可以。 提前完成所有人..
答案 0 :(得分:1)
你可以使用线程来做到这一点:
var thread = new Thread(() =>
{
Thread.Sleep(15 * 1000);
Run();
});
thread.Start();
这样,Run
方法将在15秒后执行。
答案 1 :(得分:1)
虽然您可以根据需要使用Reactive Extensions,但实际上并不需要。您可以使用Timer:
执行此操作// at class scope
private System.Threading.Timer myTimer = null;
void SomeMethod()
{
// Creates a one-shot timer that will fire after 15 seconds.
// The last parameter (-1 milliseconds) means that the timer won't fire again.
// The Run method will be executed when the timer fires.
myTimer = new Timer(() =>
{
Run();
}, null, TimeSpan.FromSeconds(15), TimeSpan.FromMilliseconds(-1));
}
请注意,Run方法在线程池线程上执行。如果您需要修改UI,则必须使用Dispatcher。
这个方法比创建一个只做等待的线程更受欢迎。计时器使用非常少的系统资源。仅当计时器触发时才创建一个线程。另一方面,休眠线程占用了相当多的系统资源。
答案 2 :(得分:0)
无需创建线程。使用 Reactive Extensions (引用Microsoft.Phone.Reactive
)可以更轻松地完成此操作:
Observable.Timer(TimeSpan.FromSeconds(15)).Subscribe(_=>{
//code to be executed after two seconds
});
请注意,代码不会在UI线程上执行,因此您可能需要使用Dispatcher
。