C# Winforms PictureBox.Load/LoadAsync don';行不通

C# Winforms PictureBox.Load/LoadAsync don';行不通,c#,winforms,picturebox,C#,Winforms,Picturebox,我有一个包含很多产品的xml文件(10000个产品,多达200000个产品,甚至更多),我正在尝试编写一个简单的winform来获取此xml文件并显示产品图像和数据: 下面是一个xml示例: <catalog> <product> <name>...</name> <price>...</price> <description>...</

我有一个包含很多产品的xml文件(10000个产品,多达200000个产品,甚至更多),我正在尝试编写一个简单的winform来获取此xml文件并显示产品图像和数据: 下面是一个xml示例:

<catalog>
     <product>
          <name>...</name>
          <price>...</price>
          <description>...</description>
         <imageurl>http://www.boscovs.com/wcsstore/boscovs/images/store/product/thumbnails/60314665830t.jpg</imageurl>
     <product>
     <product>
      ...
     <product>
</catalog>
当我使用
img.LoadAsync
时,我看不到任何图像,当我达到8700中的图像编号1990时,我得到这个异常:

An exception of type 'System.ComponentModel.Win32Exception' occurred in 
System.Windows.Forms.dll but was not handled in user code

Additional information: Error creating window handle.
当我使用
img.Load
时,有时会得到图像,有时会出现超时异常


这不是一项很难完成的任务,但是,我怎样才能得到一个简单的代码呢?

我担心这里的问题是,您正在导致在UI线程上运行的跨线程调用加载。为了避免异常,您需要调用invoke方法,该方法将工作分派到UI线程:

img.Invoke(() => { img.Load(...) });

我是这样做的:this.Invoke(newmethodinvoker)(委托{tblloding.Visible=false;//在GUI线程上执行以下代码。this.Controls.Add(tblProduct); }));您是否也尝试过在
img.Load
方法上调用使用
Invoke
方法?没有,因为我正在后台工作程序中创建PictureBox。我遇到了此异常:
在创建窗口句柄之前,无法对控件调用Invoke或BeginInvoke
。但是,我仍然在后台工作程序中创建PictureBox。。。所以没有问题。不是吗?“我正在后台工作人员中创建PictureBox…”嗯,这大概是你的问题。您应该只在UI线程上创建WinForms控件和窗体。
img.Invoke(() => { img.Load(...) });