1. 首页>
  2. 技术文章>
  3. c#如何在非静态线程中获取剪贴板文本

c#如何在非静态线程中获取剪贴板文本

7/14/21 10:20:29 AM 浏览 1059 评论 0

Clipboard

添加一个助手方法,它可以在MTA主线程中作为STA线程运行Action。我认为这可能是最干净的方法来实现它。

class Program
{
    [MTAThread]
    static void Main(string[] args)
    {
        RunAsSTAThread(
            () =>
            {
                Clipboard.SetText("Hallo");
                Console.WriteLine(Clipboard.GetText());
            });
    }
    /// <summary>
    /// Start an Action within an STA Thread
    /// </summary>
    /// <param name="goForIt"></param>
    static void RunAsSTAThread(Action goForIt)
    {
        AutoResetEvent @event = new AutoResetEvent(false);
        Thread thread = new Thread(
            () =>
            {
                goForIt();
                @event.Set();
            });
        thread.SetApartmentState(ApartmentState.STA);
        thread.Start();
        @event.WaitOne();
    }
}


网友讨论