LocalMessageSender Class
Microsoft Silverlight will reach end of support after October 2021. Learn more.
Represents the sending end of a local messaging channel between two Silverlight-based applications.
Inheritance Hierarchy
System.Object
System.Windows.Messaging.LocalMessageSender
Namespace: System.Windows.Messaging
Assembly: System.Windows (in System.Windows.dll)
Syntax
'Declaration
Public NotInheritable Class LocalMessageSender
public sealed class LocalMessageSender
The LocalMessageSender type exposes the following members.
Constructors
Name | Description | |
---|---|---|
LocalMessageSender(String) | Initializes a new instance of the LocalMessageSender class and configures it to send messages to the receiver with the specified name. | |
LocalMessageSender(String, String) | Initializes a new instance of the LocalMessageSender class and configures it to send messages to the receiver with the specified name and domain. |
Top
Properties
Name | Description | |
---|---|---|
ReceiverDomain | Gets the domain of the LocalMessageReceiver that this sender will send messages to. | |
ReceiverName | Gets the name of the LocalMessageReceiver that this sender will send messages to. |
Top
Methods
Name | Description | |
---|---|---|
Equals(Object) | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) | |
Finalize | Allows an object to try to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection. (Inherited from Object.) | |
GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) | |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
SendAsync(String) | Sends the specified message to the configured receiver asynchronously. | |
SendAsync(String, Object) | Sends the specified messages to the configured receiver asynchronously. | |
ToString | Returns a string that represents the current object. (Inherited from Object.) |
Top
Remarks
A LocalMessageSender object can send messages to a LocalMessageReceiver object in a different Silverlight-based application running on the same computer. For information about using these classes, see Communication Between Local Silverlight-Based Applications.
Examples
The following code example demonstrates how to use this class. This example is part of a larger example available in How to: Implement Communication Between Local Silverlight-Based Applications.
Imports System
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Messaging
Partial Public Class Sender
Inherits UserControl
Private messageSender As LocalMessageSender
Public Sub New()
InitializeComponent()
UpdateButton()
messageSender = New LocalMessageSender( _
"receiver", LocalMessageSender.Global)
AddHandler messageSender.SendCompleted, _
AddressOf sender_SendCompleted
SendMessage("message from Sender constructor")
End Sub
Private clickNumber As Integer = 1
Private Sub UpdateButton()
button.Content = "send message 'click " & clickNumber & "'"
End Sub
Private Sub Button_Click(ByVal sender As Object, _
ByVal e As RoutedEventArgs)
SendMessage("click " & clickNumber)
clickNumber += 1
UpdateButton()
End Sub
Private Const MAX_ATTEMPTS As Integer = 10000
Private attempt As Integer = 1
Private Sub SendMessage(ByVal message As String)
messageSender.SendAsync(message, attempt)
End Sub
Private Sub sender_SendCompleted(ByVal sender As Object, _
ByVal e As SendCompletedEventArgs)
If e.Error IsNot Nothing Then
LogError(e)
attempt += 1
If attempt > MAX_ATTEMPTS Then
output.Text = "Could not send message."
Return
End If
SendMessage(e.Message)
Return
End If
output.Text = _
"Message: " & e.Message & Environment.NewLine & _
"Attempt " & CType(e.UserState, Integer) & _
" completed." & Environment.NewLine & _
"Response: " & e.Response & Environment.NewLine & _
"ReceiverName: " & e.ReceiverName & Environment.NewLine & _
"ReceiverDomain: " & e.ReceiverDomain
' Reset attempt counter.
attempt = 1
End Sub
Private Sub LogError(ByVal e As SendCompletedEventArgs)
System.Diagnostics.Debug.WriteLine( _
"Attempt number {0}: {1}: {2}", CType(e.UserState, Integer), _
e.Error.GetType().ToString(), e.Error.Message)
End Sub
End Class
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Messaging;
namespace SendingApplication
{
public partial class Sender : UserControl
{
private LocalMessageSender messageSender;
public Sender()
{
InitializeComponent();
UpdateButton();
messageSender = new LocalMessageSender(
"receiver", LocalMessageSender.Global);
messageSender.SendCompleted += sender_SendCompleted;
SendMessage("message from Sender constructor");
}
private int clickNumber = 1;
private void UpdateButton()
{
button.Content = "send message 'click " + clickNumber + "'";
}
private void Button_Click(object sender, RoutedEventArgs e)
{
SendMessage("click " + clickNumber);
clickNumber++;
UpdateButton();
}
private const int MAX_ATTEMPTS = 10000;
private int attempt = 1;
private void SendMessage(string message)
{
messageSender.SendAsync(message, attempt);
}
private void sender_SendCompleted(object sender, SendCompletedEventArgs e)
{
if (e.Error != null)
{
LogError(e);
attempt++;
if (attempt > MAX_ATTEMPTS)
{
output.Text = "Could not send message.";
return;
}
SendMessage(e.Message);
return;
}
output.Text =
"Message: " + e.Message + Environment.NewLine +
"Attempt " + (int)e.UserState +
" completed." + Environment.NewLine +
"Response: " + e.Response + Environment.NewLine +
"ReceiverName: " + e.ReceiverName + Environment.NewLine +
"ReceiverDomain: " + e.ReceiverDomain;
// Reset attempt counter.
attempt = 1;
}
private void LogError(SendCompletedEventArgs e)
{
System.Diagnostics.Debug.WriteLine(
"Attempt number {0}: {1}: {2}", (int)e.UserState,
e.Error.GetType().ToString(), e.Error.Message);
}
}
}
Version Information
Silverlight
Supported in: 5, 4, 3
Platforms
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.