Я хочу, чтобы сервер постоянно отслеживал доступные клиенты с помощью WCF Discovery.
public void Start()
{
findCriteria = new FindCriteria(typeof(ITestRunnerAgent))
{
Scopes = {new Uri(scope)},
Duration = TimeSpan.FromMilliseconds(DiscoveryIntervalInMiliseconds)
};
discoveryClient = GetInitilizedDisoveryClient();
discoveryClient.FindAsync(findCriteria);
}
private DiscoveryClient GetInitilizedDisoveryClient()
{
var client = new DiscoveryClient(new UdpDiscoveryEndpoint());
client.FindProgressChanged += OnFindProgressChanged;
client.FindCompleted += OnFindCompleted;
return client;
}
private void OnFindCompleted(object sender, FindCompletedEventArgs e)
{
if (!e.Cancelled)
{
// HERE! Sometimes e.Error is not null, but as described in question
discoveryClient.FindAsync(findCriteria);
}
}
К сожалению, иногда в точке, указанной в комментарии, я получаю прерванный канал Udp:
объект связи,
System.ServiceModel.Channels.UdpChannelFactory + ClientUdpDuplexChannel,
не может быть использован для общения
потому что оно было прервано.
У кого-нибудь есть идеи, почему?