クリップボードから画像を読み取り、指定したフォルダーに保存しようとしていましたClipboard.getImage()
スタンドアロンの場合、機能は正常に機能します。スレッド内で関数を使用していたとき、機能しませんでした。
クリップボードから画像を読み取り、指定したフォルダーに保存しようとしていました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);
}
これはそうではありません - null 参照:
[MTAThread()]
static void Main(string[] args)
{
Image img = Clipboard.GetImage();
img.Save(@"c:\temp\myimg.png",System.Drawing.Imaging.ImageFormat.Png);
}
STA バックグラウンド スレッド関連のソリューションについては、このスレッドを参照してください: バックグラウンド ワーカー スレッドをシングル スレッド アパートメントに設定するにはどうすればよいですか?