ThreadHelper Třída

Definice

Poskytněte obecnému Pomocníkovi dispečera zajistěte, aby byla metoda vyvolána v hlavním vlákně aplikace. K pohodlné identifikaci hlavního vlákna používáme aktuálního dispečera aplikace. Všimněte si, že to znamená, že instance aplikace musí být inicializována. V současné době WindowManager inicializuje. Nepoužíváme ale DispatcherOperation, protože nejsou popisné pro RPC. Například pokud je vlákno uživatelského rozhraní uprostřed volání RPC a musíme spustit kód ve vlákně uživatelského rozhraní, pak se DispatcherOperations nezíská. Důvodem je, že DispatcherOperations jsou iniciovány publikováním zprávy do vlákna uživatelského rozhraní a vlákno uživatelského rozhraní musí odeslat tuto zprávu. Pokud vlákno uživatelského rozhraní provádí volání RPC, tyto zprávy nebudou odebrány z fronty. Standardní filtr zpráv OLE zpracovává pouze omezené sady zpráv z fronty a dokonce i filtr zpráv sady Visual Studio ignoruje většinu ostatních. Prostřednictvím služby UIThreadInvokerPrivate se operace ve vlákně uživatelského rozhraní vrátí do volání COM. Tato operace bude povolena prostřednictvím filtru zpráv, pokud je součástí stejného logického volání – filtr zpráv se zobrazí jako "vnořené volání" a nemůže ho odmítnout.

public ref class ThreadHelper abstract
[Windows::Foundation::Metadata::WebHostHidden]
public ref class ThreadHelper abstract
[Windows::Foundation::Metadata::WebHostHidden]
class ThreadHelper abstract
public abstract class ThreadHelper
type ThreadHelper = class
Public MustInherit Class ThreadHelper
Dědičnost
ThreadHelper

Konstruktory

ThreadHelper()

Inicializuje novou instanci ThreadHelper .

Vlastnosti

Generic

Získá obecný ThreadHelper .

JoinableTaskContext

Získá instanci typu Singleton JoinableTaskContext pro Visual Studio.

JoinableTaskFactory

Získá objekt pro vytváření úloh s připojením pro Visual Studio.

Metody

BeginInvoke(Action)

Naplánujte akci pro spuštění na vlákně uživatelského rozhraní asynchronně.

BeginInvoke(DispatcherPriority, Action)

Naplánujte akci pro spuštění na vlákně uživatelského rozhraní asynchronně.

CheckAccess()

Určuje, zda je volání provedeno ve vlákně uživatelského rozhraní.

GetInvocationWrapper()

Odvozené třídy musí implementovat metodu GetInvocationWrapper pro implementaci objektu na jedno použití, který zabalí volanou metodu. To může mít hodnotu null.

InvokeWithRpcAsync(Action, Func<Boolean>, Boolean)

Provede volání RPC vyvolání akce, jako je například Microsoft.VisualStudio.Shell.ThreadHelper.Invoke(System.Action) metoda, ale ve vlákně na pozadí. Vzhledem k tomu, že je ve vlákně na pozadí, se neblokuje, dokud není zpracováno volání RPC. Pokud se volání RPC nepovede, opakuje se opakované pokusy, dokud onRpcCallFailed vrátí hodnotu true. Tato metoda je také odlišná od rozhraní, BeginInvoke(Action) které používá dispečera vlákna uživatelského rozhraní, ale nemusí být ve stavu pro okamžité zpracování požadavku (to znamená, že může být v průběhu čerpacích procesů).

ThrowIfNotOnUIThread(String)

Určuje, zda je volání prováděno ve vlákně uživatelského rozhraní a vyvolá COMException (RPC_E_WRONG_THREAD), pokud není.

ThrowIfOnUIThread(String)

Určuje, zda je volání prováděno ve vlákně uživatelského rozhraní a vyvolá COMException (RPC_E_WRONG_THREAD), pokud je.

Platí pro