현재 프로젝트에서 wcf 클라이언트를 통해 응용 프로그램을 관리해야합니다. 내가 직면하고있는 문제는 서버에 콜을 한 후 콜백을 기다리는 클라이언트가 필요하다는 것이다. 시나리오는 다음과 같습니다.wcf 클라이언트가 콜백 대기
서비스를 호출 한 다음 창을 표시하고 서버 응용 프로그램이 유휴 상태입니다. 창에서 버튼을 클릭하면 클라이언트에 대한 콜백이 생성됩니다. 그 시간 동안 클라이언트 UI는 비활성화되어야합니다. 콜백을 기다려야합니다. 이걸 어떻게 얻을 수 있는지 말해 주시겠습니까? 동시성 모드 또는 연산 계약 속성과 관련이 있습니까?
이는의 ServiceContract와 CallbackContract 내 코드입니다 :
[ServiceContract(CallbackContract = typeof(IWCFServiceCallback))]
public interface IWCFService
{
[OperationContract]
void OpenWindow();
}
public interface IWCFServiceCallback
{
[OperationContract(IsOneWay = true)]
void ReturnValue(object[] value);
}
답장을 보내 주셔서 감사합니다. 메소드를 호출 한 후 메서드를 호출 한 후 메서드 자체가 콜백없이 값을 반환하는 것처럼 클라이언트가 동일한 방식으로 작동하게하려는 경우 - 클라이언트는 서비스가 작업을 완료하고 값을 반환 할 때까지 기다립니다. 클라이언트가 수동으로 잠글 수 없습니다. Excel 부가 기능은 양식/창이 없기 때문에 사용할 수 없습니다. – Bartek
Excel에 FunctionWizard가 열려있는 동안 서비스 호출이 이루어 지므로 Excel이 손상되기 때문에 셀을 잠글 수 없습니다. – Bartek
@Bartek - 그건 다른 문제이고, 그렇다면 별도의 질의 응답입니다. 나는이 질문에 답을 주었다고 믿지만, 알려주지 않으면 더 멀리 도우려고 노력할 것이다. 참고로 여기에있는 샘플 코드의 Microsoft는 자체 [권장되는 명명 규칙] (https://msdn.microsoft.com/en-us/library/mt674882.aspx#Anchor_7)에서 벗어났습니다. 비동기 함수는 이름에 'Async'가 추가되어야합니다. 우리가 여기서 'async' 키워드를 보지 못했다고해도, 이것은 비동기식 아키텍처입니다. – InteXX