Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>It should work using IsOneWay = true..</p> <p>Here is an example</p> <p>----Service Code</p> <pre><code>[ServiceContract(CallbackContract = typeof(IServerFinishedProcessingCallback), SessionMode = SessionMode.Required)] public interface IDualMathService { [OperationContract(IsOneWay=true)] void ProcessAdd(double num1, double num2); [OperationContract(IsOneWay = true)] void ProcessSubtract(double num1, double num2); [OperationContract(IsOneWay=true)] void ProcessMultiply(double num1, double num2); [OperationContract(IsOneWay=true)] void ProcessDivide(double num1, double num2); } public interface IServerFinishedProcessingCallback { [OperationContract(IsOneWay=true)] void ProcessingFinished(string operation, double result); } [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Multiple)] public class DualMathServiceClass : IDualMathService { readonly IServerFinishedProcessingCallback _clientCode = OperationContext.Current.GetCallbackChannel&lt;IServerFinishedProcessingCallback&gt;(); //[PrincipalPermission()] public void ProcessAdd(double num1, double num2) { Console.WriteLine("Processing Request for client session ID " + OperationContext.Current.SessionId); Console.WriteLine(string.Format("Processing Add Request for parameters {0} and {1} ", num1, num2)); _clientCode.ProcessingFinished("Add", (num1 + num2)); } public void ProcessSubtract(double num1, double num2) { Console.WriteLine("Processing Request for client session ID " + OperationContext.Current.SessionId); Console.WriteLine(string.Format("Processing Subtract Request for parameters {0} and {1} ", num1, num2)); _clientCode.ProcessingFinished("Subtract", (num1 - num2)); } public void ProcessMultiply(double num1, double num2) { Console.WriteLine("Processing Request for client session ID " + OperationContext.Current.SessionId); Console.WriteLine(string.Format("Processing Multiply Request for parameters {0} and {1} ", num1, num2)); _clientCode.ProcessingFinished("Multiply", (num1 * num2)); } public void ProcessDivide(double num1, double num2) { Console.WriteLine("Processing Request for client session ID " + OperationContext.Current.SessionId); Console.WriteLine(string.Format("Processing Divide Request for parameters {0} and {1} ", num1, num2)); if (num2 == 0) throw new FaultException&lt;string&gt;("Number 2 can not be zer"); _clientCode.ProcessingFinished("Divide", (num1 / num2)); } } </code></pre> <hr> <p>Client Code</p> <pre><code>[CallbackBehavior(IncludeExceptionDetailInFaults = true, UseSynchronizationContext = true, ValidateMustUnderstand =true, ConcurrencyMode = ConcurrencyMode.Multiple)] public class ClientCallbackClass : IDualMathServiceCallback { public delegate void ProceFinishedEventDelegate(string operation, double result); public event ProceFinishedEventDelegate ProcessFinishedEvent = null; public void ProcessingFinished(string operation, double result) { if (ProcessFinishedEvent != null) { ProcessFinishedEvent(operation, result); } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload