如何使用C#中的线程调用一个带两个参数的函数?我必须从另一个函数调用StartDNIThread(string storeID,string queryObject).我必须传递两个值.它们都是字符串
这是我编写的一个简单代码:
private void button1_Click(object sender, EventArgs e)
{
label1.Text = "first";
Thread.Sleep(1000);
label1.Text = "second";
}
Run Code Online (Sandbox Code Playgroud)
但标签从不显示"第一".我使用断点检查并且语句label1.text ="first"被执行但在标签中没有显示"first",只显示"second".
为什么会这样?
在下面的WPF代码中,只有一个按钮和一个标签.我希望行为是这样的:我会看到按钮被禁用,标签上写着"Doing Stuff",然后会冻结那个用户界面.但这种情况并非如此.我甚至没有看到"Doing Stuff"标签UI被冻结到开头.你能告诉我这背后的逻辑吗?为什么Thread.Sleep会让UI立即冻结?
using System.Threading.Tasks;
using System.Threading;
using System.Windows;
namespace MessagePump
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void btnDoStuff_Click(object sender, RoutedEventArgs e)
{
btnDoStuff.IsEnabled = false;
lblStatus.Content = "Doing Stuff";
Thread.Sleep(4000);
lblStatus.Content = "Not doing anything";
btnDoStuff.IsEnabled = true;
}
}
}
;
Run Code Online (Sandbox Code Playgroud)