Я всегда придерживаюсь этого паттерна с Silverlight:
// Call
serviceClient.CallMethodCompleted += (s, a) =>
{
// Error?
if (a.Error == null)
{
// Do something
}
else
{
// Handle error
}
// Close
serviceClient.CloseAsync();
};
// Call
serviceClient.CallMethodAsync();
Это не обязательно, но это хорошо, поскольку в браузере есть HTTP-сообщения активности и небольшая уборка, никогда никому не вредящая.