在异步调用时,为什么textbox可以跨线程访问,而combobox却不行。只想知道为什么。在线

解决方案 »

  1.   

    不清楚你跨线程访问不行是什么意思,程序会抛出异常么?一般跨线程是不能访问界面的,如果一定要访问界面可以建立一个delegate类型的过程,在这个过程中调用访问过程,判断控件的InvokeRequired是否安全。或者你可以简单的用BackgroundWorker来处理
      

  2.   

    这样:abc(textbox1.text,combobox1.selectedvalue.tostring())abc为异步处理的方法名,后面为方法。textbox1可方法,但访问combobox1时出错" 线程间操作无效: 从不是创建控件“.....”的线程访问它。"我的目标:不是为解决线程间安全调用,因为我已在调用中解决。我想知道为什么会出现这种情况,访问textbox1不出现这样的提示,而combobox1出现。(要出现应该两者都要出现呀,,真是费解)
      

  3.   

    不知道你在哪异步了,试试:
    this.Invoke(new MethodInvoker(delegate
        {
            abc(textbox1.text,combobox1.selectedvalue.tostring());
        }));
      

  4.   

    Control.CheckForIllegalCrossThreadCalls = false;加这个不行嘛!
      

  5.   

    窗体上加Control.CheckForIllegalCrossThreadCalls = false; 或则 this.Invoke((MethodInvoker)delegate
                {
                    LineLabel.Text ="!23";
                });