我试图从剪贴板中读取图像并将其保存在指定的文件夹中Clipboard.getImage()
如果它是独立的,该功能可以正常工作。当我在线程中使用该函数时,它不起作用。
这是 STA 与 MTA 线程问题。您将无法从 MTA 线程访问剪贴板。以供参考:
这有效:
[STAThread()]
static void Main(string[] args)
{
Image img = Clipboard.GetImage();
img.Save(@"c:\temp\myimg.png",System.Drawing.Imaging.ImageFormat.Png);
}
这不是 - 空引用:
[MTAThread()]
static void Main(string[] args)
{
Image img = Clipboard.GetImage();
img.Save(@"c:\temp\myimg.png",System.Drawing.Imaging.ImageFormat.Png);
}
查看此线程以获得 STA 后台线程相关解决方案: 如何将后台工作线程设置为单线程单元?
当您尝试从线程内的剪贴板读取图像时,您必须将线程 ApartmentState 设置为 STA。尝试这个:
Thread t = new Thread(DoSomething());
t.SetApartmentState(ApartmentState.STA);
t.Start();