0

クリップボードから画像を読み取り、指定したフォルダーに保存しようとしていましたClipboard.getImage()

スタンドアロンの場合、機能は正常に機能します。スレッド内で関数を使用していたとき、機能しませんでした。

4

2 に答える 2

3

これは、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 バックグラウンド スレッド関連のソリューションについては、このスレッドを参照してください: バックグラウンド ワーカー スレッドをシングル スレッド アパートメントに設定するにはどうすればよいですか?

于 2013-07-25T07:26:29.907 に答える