gpt4 book ai didi

c# - 访问其他线程wpf中的ui元素

转载 作者:行者123 更新时间:2023-11-30 20:53:56 24 4
gpt4 key购买 nike

我需要从另一个线程访问我的 WPF 应用程序中的 TextBoxes 并且出现异常。我知道,每个 UI 控件中都有一个属性 Dispatcher 和一个方法 BeginInvoke ,但我不知道如何从 TextBoxes 获取值.

所以,这是代码:

private void TestConnection_Click(object sender, RoutedEventArgs e)
{
try
{
var task = new Task(() => TryConnect());
task.Start();
}
catch (Exception exc)
{
MessageBox.Show(exc.Message);
}
}
void TryConnect()
{
try
{
string con_str = "Server=" + Ip.Text + ";Port=" + Port.Text +
";Database=hospital;Uid=" + login.Text +
";Pwd=" + password.Text + ";";
using (MySqlConnection mcon = new MySqlConnection(con_str))
{
mcon.Open();
MessageBox.Show("Connection is OK!");
mcon.Close();
}
}
catch (MySqlException ex)
{
MessageBox.Show(ex.ErrorCode.ToString() + " " + ex.Message);
}
catch (Exception exc)
{
MessageBox.Show(exc.Message);
}
}

最佳答案

如果您创建了所需值的副本,那么您应该能够访问它们:

string username = login.Text, password = password.Text, ip = Ip.Text, port = Port.Text;
var task = new Task(() => TryConnect(username, password, ip, port));

和:

void TryConnect(string username, string password, string ip, string port) 
{
// ...
}

像这样在本地复制值意味着您不需要从后台线程访问 UI 元素。

关于c# - 访问其他线程wpf中的ui元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19529234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com