English 中文(简体)
阅读清单内容
原标题:access list element from thread

I have a "List" in the main application and I am trying to access its elements from within a thread. I am getting this exception: {"The calling thread cannot access this object because a different thread owns it."} System.SystemException {System.InvalidOperationException}

最佳回答
DispatcherOperation d = myListBox.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => 
{ 
    // access your listbox and return something
})); 

然后要求您的派遣行动达到回报价值。

myValue = d.Result; //Result is of type Object
问题回答

您可以通过宣布代表而使用交叉口。

private delegate void thread_delegate();

从而形成一种方法,使你能够查阅你的名单。

private void SampleMethod()
{
....
}

then create a method for your thread. Inside that method invoke your method whick

private void ThreadMethod()
{

           thread_delegate d = new thread_delegate(SampleMethod);
            d.Invoke();
}

在你的发言中,你 create了......

 Thread t = new Thread(new ThreadStart(ThreadMethod));    
 t.Start();

Try this.
MylistBox is a ListBox

namespace TEST
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Thread th = new Thread(AccessList);
            th.Start(MylistBox);
        }

        void AccessList(Object O)
        {
            ListBox lBox = O as ListBox;
            for (int i = 0; i < lBox.Items.Count; i++)
            {
                MessageBox.Show(lBox.Items[i].ToString());
            }
        }
    }
}




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签