SolidColorBrush
我在一些非 GUI 线程上创建了一个,并想将它传递给一个 GUI 线程来显示它,但我得到了InvalidOperationException
:(The calling thread cannot access this object because a different thread owns it.
即使我尝试了Freeze();
它)。如何将在线程 X 中创建的对象传递给线程 Y ?
我知道我可以SolidColorBrush
在 GUI 线程中创建这个对象Dispatcher
,但这会使一切变得复杂......我想在工作线程中创建它。
额外细节:
我在一些静态类中初始化了一些静态委托,以允许将消息从业务层发送到 GUI:
public static class Gui{
private static PrintMethodDelegate _printMethod;
public static void InitializeGuiInterface(PrintMethodDelegate printMethod){
_printMethod = printMethod;
}
public static void Print(GuiMessage data) { _printMethod(data); }
}
初始化(在 GUI 线程中):
Gui.InitializeGuiInterface(_messagesToUserHandler.PrintMessage);
然后在另一个(非gui)线程中,我使用它:
Gui.Print(new GuiMessage(testDescription) { Foreground = new SolidColorBrush(someColor) });
而是GuiMessage
:
public class GuiMessage {
public string Msg { get; set; }
private SolidColorBrush _foregroundBrush;
public SolidColorBrush Foreground
{
get { return _foregroundBrush; }
set { _foregroundBrush = value; }
}
}