다른 스레드에서 윈도우의 배경을 변경하고 싶습니다. 두 개의 프로그램이 있는데 하나는 작업 권한이고 다른 하나는 InvalidOperationException을 던집니다.다른 스레드에 의해 생성 된 객체 사용
오른쪽 코드 :
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Thread t = new Thread(new ParameterizedThreadStart(threadTest));
t.Start(@"C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg");
}
void threadTest(object obj)
{
string path = obj as string;
this.Dispatcher.Invoke(new Func<object>(() => this.Background = new
}
}
오류 코드 :이 코드 사이
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Thread t = new Thread(new ParameterizedThreadStart(threadTest));
t.Start(@"C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg");
}
void threadTest(object obj)
{
string path = obj as string;
//this.Dispatcher.Invoke(new Func<object>(() => this.Background = new ImageBrush(new BitmapImage(new Uri(path)))));
ImageBrush background = new ImageBrush(new BitmapImage(new Uri(path)));
this.Dispatcher.Invoke(new Func<object>(() => this.Background = background));
}
}
다른 오류 코드가 자식 스레드에서 ImageBrush와 개체를 만들 수 있다는 것입니다. 그래서 내 질문은 : wpf 프로그램에서 스레드가 자신의 스레드에 의해 생성 된 개체를 사용할 수 있습니다? 어떤 답장을 보내 주셔서 감사합니다 .
UI 스레드가 자체적으로 만든 개체 만 사용할 수있는 경우 다른 스레드가 개체를지나 UI 스레드로 보내도록하는 방법이 있습니까? – adream307
@ adream307 확실합니다, 제 편집 참조 :) –