wpf 如何使用ISynchronizeInvoke从剪贴板获取数据

b5lpy0ml  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(102)

我试图使用Clipboard.GetText与STA线程从剪贴板中获取数据,但我必须修改和使用ISynchronizeInvoke从剪贴板中获取数据任何想法我怎么能使用它?

knsnq2tg

knsnq2tg1#

Application.Current.Dispatcher.Invoke(() =>
{    
    string clipboardText = Clipboard.GetText();
});

字符串
这将工作:-)
我的视图模型基类中有这个

/// <summary>
/// Invokes the specified action on the UI thread.
/// </summary>
/// <param name="action">The action.</param>
protected void Invoke(Action action)
{
    System.Windows.Application.Current.Dispatcher.Invoke(action);
}

/// <summary>
/// Invokes it if needed on the main thread else uses the current thread
/// </summary>
/// <param name="action"></param>
protected void InvokeIfRequired(Action action)
{
    if (InvokeRequired())
        Invoke(action);
    else
        action.Invoke();
}

/// <summary>
/// Used to test if the action is on a background thread
/// </summary>
/// <returns></returns>
protected bool InvokeRequired() => System.Windows.Application.Current?.Dispatcher?.Thread is not null && Thread.CurrentThread != System.Windows.Application.Current.Dispatcher.Thread;


我发现它使用起来很简单,尤其是对于所有的异步任务和await
这样我就不用跟踪了

相关问题