このブログに基づいて、Silverlight に SignalR を実装しようとしています: SignalR and Silverlight。
.Invoke() を実行しようとすると、ランタイム エラー "System.InvalidOperationException: The Start method must be called before data can send. at Microsoft.AspNet.SignalR.Client.Connection.Send(String data) at Microsoft.AspNet" が表示されます。 .SignalR.Client.Hubs.HubProxy.Invoke[T](String メソッド、Object[] 引数)..."
接続に _conn.Start() があります。呼び出す直前にもう一度 Start() しようとすると、例外がスローされます。これが私のコードです:
private IHubProxy _hub;
private HubConnection _conn;
public AddProductView()
{
InitializeComponent();
var url = Application.Current.Host.Source.GetComponents(UriComponents.Scheme | UriComponents.HostAndPort,
UriFormat.Unescaped);
_conn = new HubConnection(url);
_hub = _conn.CreateHubProxy("SilverlightPrism.Mvc.Services.ProductHub");
_hub.On<string>("NewMessage", message => Deployment.Current.Dispatcher.BeginInvoke(() => DoAddItem(message) ));
_conn.Start();
}
private void DoAddItem(string item)
{
var product = DeserializeToProduct(item);
ProductData.Products.Add(product);
}
private void buttonAdd_Click(object sender, RoutedEventArgs e)
{
Random random = new Random();
var id = Guid.NewGuid();
var product = new Product
{
Price = random.Next(1000,100000),
ProdId = id,
ProdName = "New prod."
};
var jsonMessage = SerializeToJsonString(product);
_hub.Invoke("SendMessage", jsonMessage);
}
_hub.Invoke(); で例外をスローしています。
ハブを正しく接続してメッセージを送信するにはどうすればよいですか?