我有以下Thread方法:
public void messageDelay()
{
Thread.Sleep(5000);
}
但是当我调用它时,它会传递UI界面,直到线程完成后我才能完成任何操作。
private void Porcessing_Click(object sender, EventArgs e)
{
label1.Text = "start under process..";
messageDelay();
label1.Text = "Result";
}
这是我的主要方法。我有什么想法吗?
答案 0 :(得分:2)
在这种情况下,您需要使用Asynchronous programming。对于可能阻塞的活动(例如您的活动)至关重要:
private async void Porcessing_Click(object sender, EventArgs e)
{
label1.Text = "start under process..";
await messageDelay();
label1.Text = "Result";
}
public async Task messageDelay()
{
await Task.Delay(5000);
}
请注意async
一直使用{}。同时检查https://blog.stephencleary.com/2012/07/dont-block-on-async-code.html
答案 1 :(得分:0)
您可以使用saver = tf.train.Saver()
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
saver.restore(sess, tf.train.latest_checkpoint('./'))
...
。此类创建另一个线程,因此UI线程不会阻塞。例如:
BackgroundWorker