Język

OperationContext.Current Właściwość

Definicja

Pobiera lub ustawia kontekst wykonywania dla bieżącego wątku.

public:
 static property System::ServiceModel::OperationContext ^ Current { System::ServiceModel::OperationContext ^ get(); void set(System::ServiceModel::OperationContext ^ value); };
public static System.ServiceModel.OperationContext Current { get; set; }
static member Current : System.ServiceModel.OperationContext with get, set
Public Shared Property Current As OperationContext

Wartość właściwości

Element OperationContext reprezentujący kontekst obsługi komunikatów i wykonywania bieżącej metody.

Przykłady

Poniższy przykład kodu używa Current właściwości i GetCallbackChannel metody do utworzenia kanału z powrotem do obiektu wywołującego z poziomu metody. Wszystkie metody w tym przykładzie to metody jednokierunkowe, dzięki czemu usługa i klient mogą komunikować się niezależnie w obu kierunkach. W takim przypadku przykładowa aplikacja kliencka oczekuje tylko jednego wywołania zwrotnego przed jego zakończeniem, ale inny klient, na przykład klient windows Forms, może odbierać dowolną liczbę wywołań z usługi.

using System;
using System.Collections.Generic;
using System.ServiceModel;
using System.Threading;

namespace Microsoft.WCF.Documentation
{
  [ServiceContract(
    Name = "SampleDuplexHello",
    Namespace = "http://microsoft.wcf.documentation",
    CallbackContract = typeof(IHelloCallbackContract),
    SessionMode = SessionMode.Required
  )]
  public interface IDuplexHello
  {
    [OperationContract(IsOneWay = true)]
    void Hello(string greeting);
  }

  public interface IHelloCallbackContract
  {
    [OperationContract(IsOneWay = true)]
    void Reply(string responseToGreeting);
  }

  public class DuplexHello : IDuplexHello
  {
    public DuplexHello()
    {
      Console.WriteLine("Service object created: " + this.GetHashCode().ToString());
    }

    ~DuplexHello()
    {
      Console.WriteLine("Service object destroyed: " + this.GetHashCode().ToString());
    }

    public void Hello(string greeting)
    {
      Console.WriteLine("Caller sent: " + greeting);
      Console.WriteLine("Session ID: " + OperationContext.Current.SessionId);
      Console.WriteLine("Waiting two seconds before returning call.");
      // Put a slight delay to demonstrate asynchronous behavior on client.
      Thread.Sleep(2000);
      IHelloCallbackContract callerProxy
        = OperationContext.Current.GetCallbackChannel<IHelloCallbackContract>();
      string response = "Service object " + this.GetHashCode().ToString() + " received: " + greeting;
      Console.WriteLine("Sending back: " + response);
      callerProxy.Reply(response);
    }
  }
}

Uwagi

Current Użyj właściwości , aby uzyskać kontekst wykonywania i komunikatu dla bieżącej metody.

Dotyczy