如何在非静态线程中获取剪贴板文本?我有一个解决方案,但我正在尝试获得最干净/最短的方法。正常调用时结果为空字符串。
我会添加一个辅助方法,它可以在 MTA 主线程中将 Action 作为 STA 线程运行。我认为这可能是实现它的最简洁的方法。
class Program
{
[MTAThread]
static void Main(string[] args)
{
RunAsSTAThread(
() =>
{
Clipboard.SetText("Hallo");
Console.WriteLine(Clipboard.GetText());
});
}
///
/// Start an Action within an STA Thread
///
///
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();
}
}
Tôi là một lập trình viên xuất sắc, rất giỏi!