c#在线程中调用Clipboard.SetImage(pictureBox1.Image)出错
在VS2005中,我先建立一个线程,在线程中调用Clipboard.SetImage(pictureBox1.Image)复制一个图片框中的图片。运行时候出错,提示:“在...
在VS2005中,我先建立一个线程,在线程中调用Clipboard.SetImage(pictureBox1.Image)复制一个图片框中的图片。运行时候出错,提示:
“在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。”
我必须在线程中完成图片的复制工作,请问有解决的办法吗? 展开
“在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。”
我必须在线程中完成图片的复制工作,请问有解决的办法吗? 展开
5个回答
展开全部
设置线程的ApartmentState属性为STA就行了,如下
private void button1_Click(object sender, EventArgs e)
{
th = new Thread(new ThreadStart(ImageCopy));
th.ApartmentState = ApartmentState.STA;
th.Start();
}
Thread th;
void ImageCopy()
{
Clipboard.Clear();
Clipboard.SetImage(pictureBox1.Image);
th.Abort();
}
private void button1_Click(object sender, EventArgs e)
{
th = new Thread(new ThreadStart(ImageCopy));
th.ApartmentState = ApartmentState.STA;
th.Start();
}
Thread th;
void ImageCopy()
{
Clipboard.Clear();
Clipboard.SetImage(pictureBox1.Image);
th.Abort();
}
展开全部
th.ApartmentState =ApartmentState.STA;
还需要设置: Control.CheckForIllegalCrossThreadCalls = false;
可以避免跨线和访问控件
还需要设置: Control.CheckForIllegalCrossThreadCalls = false;
可以避免跨线和访问控件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
LOCK一下试试!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加上[STAThread]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
[STAThread]
protected void Main()
protected void Main()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询