Все работает нормально, если я запускаю клиент и сервер на одном компьютере и использую что-то вроде Fiddler для мониторинга сетевого трафика, когда я запускаю клиент на своем компьютере и подключаюсь к удаленному серверу. Проблема возникает только тогда, когда я запускаю клиент на своем компьютере и подключаюсь напрямую к удаленному серверу.
Ситуация такова, что я делаю два запроса (A и Б) на сервер. Запрос «А» требует дополнительной обработки на сервере и может занять несколько десятков секунд, но не блокирует пользовательский интерфейс. Запрос «B» выполняется намного быстрее, обычно он возвращается через пару секунд, но требует блокировки пользовательского интерфейса.
Что должно произойти (и происходит, когда я отлаживаю), так это :
- Сделать запрос «А».
- Сделать запрос «Б», который блокирует пользовательский интерфейс.
- Запрос «B» возвращается, и пользователь может продолжать работу
- Запрос «А» возвращается.
- Сделать запрос «А».
- Сделать запрос «Б», который блокирует пользовательский интерфейс.
- Запрос «А» возвращает. >
- Запрос «Б» возвращается, и пользователь может продолжать работу
Код: Выделить всё
private void MakeRequestA()
{
LoadOperation loadOpA = domainContextA.Load(domainContextA.RequestA(), LoadBehaviour.RefreshCurrent, true);
loadOpA.Completed += LoadOpA_Completed;
}
private void LoadOpA_Completed(object sender, EventArgs e)
{
// Process results
}
Код: Выделить всё
private void MakeRequestB()
{
// Block the UI
LoadOperation loadOpB = domainContextB.Load(domainContextB.RequestB(), LoadBehaviour.RefreshCurrent, true);
loadOpB.Completed += LoadOpB_Completed;
}
private void LoadOpB_Completed(object sender, EventArgs e)
{
// Process results
// Unblock the UI
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... r-requests
Мобильная версия