从 FileSystemWatcher 创建 child window
Create a child window from a FileSystemWatcher
我有一个 FileSystemWatcher 监视新创建的文件。
当它看到一个时,我希望它打开一个child window。
使用这个:
private void FileSystemWatcher_Created(object sender, FileSystemEventArgs e)
{
TableWindow win = new TableWindow();
win.Owner = this;
win.Text = "xxx";
win.ShowInTaskbar = false;
win.Show();
}
我得到的错误是:
Cross-thread operation not valid: Control 'Form1' accessed from a thread other than the thread it was created on
谷歌搜索后。我最终得到了这个
TableWindow win = new TableWindow();
win.Owner = this;
win.Text = "xxx";
win.ShowInTaskbar = false;
win.Invoke((MethodInvoker)delegate
{
win.Show();
});
这给了我一个不同的错误:
Invoke or BeginInvoke cannot be called on a control until the window handle has been created.
场景如下。在游戏中,每次打开新的 table 时,都会创建一个新文件。创建该文件后,我想打开一个 child window 以显示有关该 table.
的统计信息
这可能吗?
我过去使用 InvokeRequired
时所做的是将它放在一个 if
语句中,如果它没有,它将调用 UI 线程上的方法'未从 UI 线程调用。
private void FileSystemWatcher_Created(object sender, FileSystemEventArgs e)
{
ShowWindow();
}
private void ShowWindow()
{
if (this.InvokeRequired)
{
var del = new MethodInvoker(ShowWindow);
this.BeginInvoke(del);
return;
}
TableWindow win = new TableWindow();
win.Owner = this;
win.Text = "xxx";
win.ShowInTaskbar = false;
win.Show();
}
我有一个 FileSystemWatcher 监视新创建的文件。
当它看到一个时,我希望它打开一个child window。
使用这个:
private void FileSystemWatcher_Created(object sender, FileSystemEventArgs e)
{
TableWindow win = new TableWindow();
win.Owner = this;
win.Text = "xxx";
win.ShowInTaskbar = false;
win.Show();
}
我得到的错误是:
Cross-thread operation not valid: Control 'Form1' accessed from a thread other than the thread it was created on
谷歌搜索后。我最终得到了这个
TableWindow win = new TableWindow();
win.Owner = this;
win.Text = "xxx";
win.ShowInTaskbar = false;
win.Invoke((MethodInvoker)delegate
{
win.Show();
});
这给了我一个不同的错误:
Invoke or BeginInvoke cannot be called on a control until the window handle has been created.
场景如下。在游戏中,每次打开新的 table 时,都会创建一个新文件。创建该文件后,我想打开一个 child window 以显示有关该 table.
的统计信息这可能吗?
我过去使用 InvokeRequired
时所做的是将它放在一个 if
语句中,如果它没有,它将调用 UI 线程上的方法'未从 UI 线程调用。
private void FileSystemWatcher_Created(object sender, FileSystemEventArgs e)
{
ShowWindow();
}
private void ShowWindow()
{
if (this.InvokeRequired)
{
var del = new MethodInvoker(ShowWindow);
this.BeginInvoke(del);
return;
}
TableWindow win = new TableWindow();
win.Owner = this;
win.Text = "xxx";
win.ShowInTaskbar = false;
win.Show();
}