Şu anda bir uygulamayı bir wcf istemcisi üzerinden yönetmek zorunda olduğum bir proje üzerinde çalışıyorum. Karşılaştığım sorun, sunucuya bir çağrı yaptıktan sonra müşterinin geri aranması için beklemesini istemesidir. Şu senaryo:wcf istemcisini geri arama için bekleyin
Bir pencereyi gösteren ve daha sonra sunucu uygulaması boş olan servise çağrı yapıyorum. Pencerede bir düğmeyi tıkladığımda, istemciye bir geri dönüş yapar. Bu süre boyunca istemci kullanıcı arabirimi devre dışı bırakılmalıdır - geri arama için beklemek zorundadır. Bana bunu nasıl başarabileceğimi söyler misiniz? Concurrency Mode veya Operation Contract niteliği ile bir ilgisi var mı?
Bu ServiceContract ve CallbackContract benim kodudur:
[ServiceContract(CallbackContract = typeof(IWCFServiceCallback))]
public interface IWCFService
{
[OperationContract]
void OpenWindow();
}
public interface IWCFServiceCallback
{
[OperationContract(IsOneWay = true)]
void ReturnValue(object[] value);
}
Cevabınız için teşekkür ederiz. Yöntemi çağırdıktan sonra, istemcinin, yöntemin kendisi (geri arama olmadan) değeri döndürüyormuş gibi davranmasını istiyorum. Müşteri, hizmetin çalışmasını tamamlayıp, bir değer döndürdüğünü bekler. Kullanıcı arayüzünü manuel olarak kilitleyemem çünkü istemci, Excel'i devre dışı bırakabileceğim hiçbir form/pencere içermeyen bir eklentidir. – Bartek
Excel'de bir FunctionWizard açıkken servis çağrısı yapılır, bu yüzden hücreleri kilitleyemiyorum çünkü Excel çöküyor. – Bartek
@Bartek - Bu, ayrı bir Soru-Cevap için farklı bir sorun. Bu sorunun cevabını verdiğime inanıyorum, ama eğer bana haber vermezseniz ve daha fazla yardımcı olmaya çalışacağım. FYI, Microsoft'un kendi örnek kodunda kendi [önerilen adlandırma kurallarını] ortadan kaldırdığını belirtiyor (https://msdn.microsoft.com/en-us/library/mt674882.aspx#Anchor_7). Eşzamansız işlevler, adlarına "Async" eklenmiş olmalıdır. Burada "async" anahtar kelimesini görmüyoruz, ancak bu yine de asenkron bir mimaridir. – InteXX