2
たとえば、textBox UI要素のテキストをTask.Run()メソッドに渡すにはどうすればよいですか?このコードは例外をスローします(...他のスレッドが所有しています)。私はフィルタのvariabeleを渡すと、例外がなくなった、これは文字列が値として渡されるためですか?Task.Run()他のスレッドが所有するオブジェクトを渡す方法は?
private async void filterTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (currentSession.SessionFilenames != null)
{
string filter = filterTextBox.Text;
dirListing.ItemsSource = await Task<IEnumerable<string>>.Run(()=> Filterfiles(filterTextBox.Text));
}
}
はい、そのケースは –
です。それは基本的にはいです:-)詳細はこちら[こちら](https://stackoverflow.com/a/30120785/1132334)をご覧ください。しかし、逆のことは当てはまりません。テキストボックスは[UIスレッドのコントロール]であるため、テキストボックスで失敗します(https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/how-to -make-thread-safe-calls-to-windows-forms-controls)を使用しています。 – dlatikay