0

我想好像有什么方法可以在 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 中是否也有可能。?提前谢谢大家..

4

3 回答 3

1

您可以通过使用线程来做到这一点:

var thread = new Thread(() =>
    {
        Thread.Sleep(15 * 1000);
        Run();
    });

thread.Start();

这样,该Run方法将在 15 秒后执行。

于 2013-07-11T11:35:56.690 回答
1

尽管您可以根据需要使用反应式扩展,但实际上没有必要。您可以使用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。

这种方法优于创建一个除了等待什么都不做的线程。计时器使用很少的系统资源。只有当计时器触发时才会创建线程。另一方面,休眠线程占用了相当多的系统资源。

于 2013-07-11T18:12:00.727 回答
0

无需创建线程。使用Reactive Extensions可以更轻松地完成此操作(参考Microsoft.Phone.Reactive):

Observable.Timer(TimeSpan.FromSeconds(15)).Subscribe(_=>{
    //code to be executed after two seconds
});

请注意,代码不会在 UI 线程上执行,因此您可能需要使用Dispatcher.

于 2013-07-11T17:55:47.853 回答