none
winforn窗口里用线程调用wpf用户控件里的函数,提示:调用线程无法访问此对象,因为另一个线程拥有该对象。 RRS feed

  • 问题

  • 在winform窗口里用elementhost把userControl11用户控件添加到里面。

    winfrom code: 简单的创建一个线程调用   userControl11用户控件里的test();

    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            Thread T;
            private void Form1_Load(object sender, EventArgs e)
            {
                T = new Thread(new ThreadStart(PollFunction));
                T.Start();
            }
            public void PollFunction()
            {

                userControl11.test();
           
            }
        }
    }

     

    usercontrol1.xaml  code:  在用户控件里创建了两个矩形,当winform里线程调用usercontrol1里的test时矩形变颜色。

    namespace WpfControlLibrary1
    {
        /// <summary>
        /// UserControl1.xaml 的交互逻辑
        /// </summary>
        public partial class UserControl1 : UserControl
        {
            public UserControl1()
            {
                InitializeComponent();
            }
            Brush brush1;
            Brush brush2;
            BrushConverter brushConverter = new BrushConverter();
            public void test()
           {
                 brush1 = (Brush)brushConverter.ConvertFromString("#FF171616");
                /////字体灰色
                brush2 = (Brush)brushConverter.ConvertFromString("#FFBABABA");
                rectangle1.Fill = brush1;
                rectangle2.Fill = brush2;
           
            }
        }
    }

    错误提示如下:

     

    问题1:怎么解决这个问题。

    问题2:如果在winform里对线程T里用while 循环调用test。

     

     

    • 已编辑 xzu 2011年10月9日 15:23
    2011年10月9日 15:21

答案