ThreadHelper Sınıf

Tanım

Genel Dağıtıcı sağlama, uygulamanın ana iş parçacığında bir yöntemin çağrıldığından emin olun. Ana iş parçacığının kolay bir şekilde tanımlanması için geçerli uygulamanın Dispatcher 'ı kullanıyoruz. Bu, uygulamanın örneğinin başlatılması gereken anlamına gelir. Şu anda, WindowManager tarafından başlatılır. Ancak, bu Işlemler RPC dostu olduklarından, DispatcherOperation kullanmıyoruz. Örneğin, UI iş parçacığı bir RPC çağrısının ortasındaysa ve Kullanıcı arabirimi iş parçacığında kodu çalıştırdığımızda, DispatcherOperations aracılığıyla almaz. Bunun nedeni, Kullanıcı arabirimi iş parçacığına bir ileti göndererek DispatcherOperations 'ın başlatıldığı ve UI iş parçacığının bu iletiyi yönetmesi gerekir. UI iş parçacığı bir RPC çağrısı yapıyor ise, bu iletiler kuyruktan kaldırılmaz. Standart OLE ileti filtresi sıradan yalnızca sınırlı bir ileti kümesini işler ve Visual Studio ileti filtresi çoğu diğerlerini yoksayar. UIThreadInvokerPrivate hizmeti aracılığıyla işlem, Kullanıcı arabirimi iş parçacığında bir COM çağrısı haline gelir. Aynı mantıksal çağrının bir parçasıysa bu işleme ileti filtreimiz izin verilir. ileti filtresi bunu "iç içe arama" olarak görür ve reddedemeyebilir.

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
Devralma
ThreadHelper

Oluşturucular

ThreadHelper()

Yeni bir örneğini başlatır ThreadHelper .

Özellikler

Generic

Genel bir alır ThreadHelper .

JoinableTaskContext

Visual Studio için Singleton JoinableTaskContext örneğini alır.

JoinableTaskFactory

Visual Studio için joinable görev fabrikasını alır.

Yöntemler

BeginInvoke(Action)

Kullanıcı arabirimi iş parçacığında yürütme işlemini zaman uyumsuz olarak zamanlayın.

BeginInvoke(DispatcherPriority, Action)

Kullanıcı arabirimi iş parçacığında yürütme işlemini zaman uyumsuz olarak zamanlayın.

CheckAccess()

Çağrının Kullanıcı arabirimi iş parçacığında yapılmakta olup olmadığını belirler.

GetInvocationWrapper()

Türetilmiş sınıfların çağrılan yöntemi sarmalaması için bir atılabilir nesnesi uygulamak üzere GetInvocationWrapper metodunu uygulaması gerekir. Bu null olabilir.

InvokeWithRpcAsync(Action, Func<Boolean>, Boolean)

RPC çağrısını Yöntem gibi eylemi çağırma, Microsoft.VisualStudio.Shell.ThreadHelper.Invoke(System.Action) ancak arka plan iş parçacığı içinde yapar. Arka plan iş parçacığında olduğundan, RPC çağrısının sunulduğundan beri engel olmaz. RPC çağrısı başarısız olursa, onRpcCallFailed doğru döndürene kadar yeniden dener. Bu yöntem, BeginInvoke(Action) UI iş parçacığı dağıtıcısı kullanan öğesinden da farklıdır ve isteği hemen işlemek için bir durumda olmayabilir (yani, bir pompalama beklenmesi durumunda olabilir).

ThrowIfNotOnUIThread(String)

Çağrının Kullanıcı arabirimi iş parçacığında yapılmakta olup olmadığını belirler ve DEĞILSE COMException (RPC_E_WRONG_THREAD) oluşturur.

ThrowIfOnUIThread(String)

Çağrının Kullanıcı arabirimi iş parçacığında yapılmakta olup olmadığını belirler ve varsa COMException (RPC_E_WRONG_THREAD) oluşturur.

Şunlara uygulanır