相关疑难解决方法(0)

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

我想在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;
            }
        }
Run Code Online (Sandbox Code Playgroud)

我真的想做什么,而不是改变按钮宽度:

BlueBan1_Image.Source = GUI.GetChampImageSource(JSONFile.Get("blue ban 1"), "avatar");
Run Code Online (Sandbox Code Playgroud)

c# wpf filesystemwatcher

4
推荐指数
1
解决办法
414
查看次数

尽管对其采取了措施,但FileSystemWatcher事件仍然提升了两次

我在这里和其他网站浏览了不少线程,以解决这个问题.

这是我的FileMonitor类:

class FileMonitor
{
    public FileMonitor(String path)
    {
        try
        {
            var watcher = new FileSystemWatcher()
            {
                Path = path,
                IncludeSubdirectories = true,
                InternalBufferSize = 65536,
                EnableRaisingEvents = true
            };

            watcher.Changed += new FileSystemEventHandler(OnFileChanged);
            watcher.Created += new FileSystemEventHandler(OnFileCreated);
            watcher.Deleted += new FileSystemEventHandler(OnFileDeleted);
            watcher.Renamed += new RenamedEventHandler(OnFileRenamed);
            watcher.Error += new ErrorEventHandler(OnWatcherError);
        }
        catch (Exception)
        {

            throw;
        }
    }

    private void OnWatcherError(object sender, ErrorEventArgs e)
    {

    }

    private void OnFileChanged(object sender, FileSystemEventArgs e)
    {
        try
        {
            ((FileSystemWatcher)sender).EnableRaisingEvents = false;

            LogFileSystemChanges(e);
        }

        finally …
Run Code Online (Sandbox Code Playgroud)

.net c# filesystemwatcher

4
推荐指数
2
解决办法
3141
查看次数

获取要在主UI线程上发生的filesystemwatcher事件

我可以在主UI线程上获得filesystemwatcher事件吗?目前,文件更改将在其自己的线程上触发.

c# filesystemwatcher winforms

3
推荐指数
1
解决办法
2742
查看次数

标签 统计

c# ×3

filesystemwatcher ×3

.net ×1

winforms ×1

wpf ×1