Я считаю, что было бы лучше реализовать один базовый делегат для всех видов position
, который загружает конкретную реализацию в зависимости от position
или любых других свойств данных, используя Loader
BaseDelegate {
property var position
Loader {
sourceComponent: {
switch(position) {
case "Engineer": return engineerDelegate
}
}
}
Component {
id: engineerDelegate
Rectangle {
Text { }
}
}
}
Может быть. В документах утверждается, что
Метод Close допускает любые незаконченные работа должна быть завершена перед возвращением. Например, завершить отправку любого буферизованные сообщения.
Существует перегрузка Close ()
, которая принимает TimeSpan
(и выдает
, если временной интервал превышен)
Abort ( )
выглядит лучшим способом незамедлительно остановить узел WCF.
Если вас устраивает отключение любых незавершенных вызовов службы, тогда вам подойдет Abort (). Close () - это вежливый способ закрыть службу.
Я мог видеть преимущество Abort () перед Close () с точки зрения целесообразности, но я мог бы предположить, что может случиться что-то плохое. В моем случае я хочу дождаться Close (), чтобы я мог повторно использовать порт (ы). Этот код будет ждать фактического закрытия служб, прежде чем возобновить работу.
Semaphore cont=new Semaphore(0, 1);
foreach (ServiceHost s in WCFServices) {
try {
s.Closed += delegate(Object o, System.EventArgs n) {
cont.Release();
};
s.Close();
cont.WaitOne();
} catch (Exception) {
}//try
}//for