我在 WPF 应用程序中有两个类似的异步方法:
EnableRegKeyAdmin
和 DisableRegKeyAdmin
。这两种方法都应该更新 TextBox (StatusBar_ValueBox
) 的文本并将 ProgressBar (StatusBar_ProgressBar
) 设置为不确定。但是,虽然 DisableRegKeyAdmin
方法按预期工作,但 EnableRegKeyAdmin
方法不会更新 UI 控件,即使 UI 更新的代码在两种方法中看起来相同。
启用RegKeyAdmin方法
private async void EnableRegKeyAdmin(string machineName)
{
try
{
MSRARegistryKeyModifier RegModifier = new MSRARegistryKeyModifier();
//These two lines below are where the issue is occuring
StatusBar_ValueBox.Text = "Checking Connectivity...";
StatusBar_ProgressBar.IsIndeterminate = true;
UpdateSearchIcon("Searching", Advanced_JumpfarmMode_MSRARegKeyChanger_FoundIcon);
var PingResult = await PingAsync(machineName);
if (PingResult.Item1)
{
// DO STUFF
}
else
{
Console.WriteLine(DateTime.Now + ": Could not connect to " + machineName);
UpdateSearchIcon("Fail", Advanced_JumpfarmMode_MSRARegKeyChanger_FoundIcon);
}
}
catch (Exception ex)
{
Console.WriteLine(DateTime.Now + ": " + "ERROR: " + ex.Message + Environment.NewLine);
}
StatusBar_ValueBox.Text = "";
StatusBar_ProgressBar.IsIndeterminate = false;
}
禁用RegKeyAdmin方法
private async void DisableRegKeyAdmin(SCCMRegKeyMachine machine)
{
try
{
MSRARegistryKeyModifier RegModifier = new MSRARegistryKeyModifier();
StatusBar_ValueBox.Text = "Checking Connectivity...";
StatusBar_ProgressBar.IsIndeterminate = true;
UpdateSearchIcon("Searching", Advanced_JumpfarmMode_MSRARegKeyChanger_FoundIcon);
var PingResult = await PingAsync(machine.Name);
if (PingResult.Item1)
{
//DO STUFF
}
else
{
Console.WriteLine(DateTime.Now + ": Could not connect to " + machine.Name);
UpdateSearchIcon("Fail", Advanced_JumpfarmMode_MSRARegKeyChanger_FoundIcon);
}
}
catch (Exception ex)
{
Console.WriteLine(DateTime.Now + ": " + "ERROR: " + ex.Message + Environment.NewLine);
}
StatusBar_ValueBox.Text = "";
StatusBar_ProgressBar.IsIndeterminate = false;
}
我尝试过的:
附加信息: UI 更新在
DisableRegKeyAdmin
方法中起作用,但在 EnableRegKeyAdmin
方法中不起作用。
方法执行期间不会引发异常。
应用程序中的其他 UI 元素按预期更新,但这些特定控件不会在此特定方法中更新。
问题: 为什么我在 EnableRegKeyAdmin 方法中的 UI 更新没有生效,如何解决此问题?
我以前见过这个问题,请执行以下操作: