如何让silverlight页面等待几秒钟

时间:2013-07-18 10:12:45

标签: multithreading silverlight-4.0

我构建了silverlight应用程序,因为我在加载内容之前显示进度条,我需要通过进度条几秒钟然后我需要关闭..

我正在使用system.threading.thread.sleep(1000),但它会让UI冻结。

我需要在silverlight中使用替代方案,其中不应该冻结UI并且进程应该等待一段时间......

1 个答案:

答案 0 :(得分:1)

默认情况下,所有内容都在UI线程上,因此任何耗时的任务都会阻止UI。为了防止这种情况,请将执行推送到后台线程 - 一种方法是Task.Factory

Task.Factory.StartNew( () => {
    Thread.Sleep(1000);
});

请注意,如果您想对UI做任何事情(我想你会这样做),那么您需要回到UI线程。 (如果后台线程尝试更改UI,则运行时将抛出异常。)使用Dispatcher执行此操作:

Task.Factory.StartNew( () => {
    // sleep on a background thread
    Thread.Sleep(1000);

    // when complete, return to the UI thread to prevent access violation
    Application.Current.Dispatcher.BeginInvoke( () => {

        // do UI stuff here
    });
});