gpt4 book ai didi

c# - WPF - 无法更改 OnChanged 方法内的 GUI 属性(从 FileSystemWatcher 触发)

转载 作者:太空狗 更新时间:2023-10-30 00:41:27 27 4
gpt4 key购买 nike

我想在 OnChanged 方法中更改 GUI 属性...(实际上我试图设置图像源...但为简单起见,此处使用了按钮)。每次 filesystemwatcher 检测到文件中的更改时都会调用它。它会到达“顶部”输出。但是当它尝试设置按钮宽度时会捕获异常。

但是如果我将相同的代码放在一个按钮中......它就可以正常工作。我真的不明白为什么..有人可以帮助我吗?

private void OnChanged(object source, FileSystemEventArgs e)
{
//prevents a double firing, known bug for filesystemwatcher
try
{
_jsonWatcher.EnableRaisingEvents = false;
FileInfo objFileInfo = new FileInfo(e.FullPath);
if (!objFileInfo.Exists) return; // ignore the file open, wait for complete write

//do stuff here
Console.WriteLine("top");
Test_Button.Width = 500;
Console.WriteLine("bottom");
}
catch (Exception)
{
//do nothing
}
finally
{
_jsonWatcher.EnableRaisingEvents = true;
}
}

我真正想做的不是改变按钮宽度:

BlueBan1_Image.Source = GUI.GetChampImageSource(JSONFile.Get("blue ban 1"), "avatar");

最佳答案

问题是这个事件是在后台线程上引发的。您需要将调用编码回 UI 线程:

// do stuff here                    
Console.WriteLine("top");
this.Dispatcher.BeginInvoke(new Action( () =>
{
// This runs on the UI thread
BlueBan1_Image.Source = GUI.GetChampImageSource(JSONFile.Get("blue ban 1"), "avatar");
Test_Button.Width = 500;
}));
Console.WriteLine("bottom");

关于c# - WPF - 无法更改 OnChanged 方法内的 GUI 属性(从 FileSystemWatcher 触发),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20575277/

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