Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> клиент требует сборки сервера для выполнения, подскажите, в чём проблема? 
:(
    Опции темы
Unlocker
Дата 24.3.2010, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

Репутация: нет
Всего: 2



Всем доброго времени суток!
Краткое введение в суть вещей (NET Framework 1.1): сервер представляет собой службу Windows, на котором развёрнут класс (WellKnownType, SingleCall) с набором определенных функций. Клиент представляет собой набор формочек для настройки содержимого БД сервера.
При выполнении клиент требует наличия сборки бизнес-логики (принадлежит только серверу), в противном случае выбрасывает FileNotFoundException.
Параллельно пробовал создать простой клиент, использующий всего три функции сервера, и он заработал без дополнительных сборок.
В настоящее время я склонен считать, что проблемы связаны с передачей в качестве параметра одного из используемых проблемным клиентом методов делегата для отрисовки ProgressBar'a по событиям таймера сервера.
Вот пример кода клиента
Код

/// <summary>
/// Делегат асинхронного перевода сервера в другой режим.
/// </summary>
private delegate string SwitchDel(string str, ProgressDelegate pd);
...
// Локальный приемник событий.
ProgressEventSink pes = new ProgressEventSink();
try
{    
    // Делаем подписку события сервера.
    ProgressDelegate pd = new ProgressDelegate(pes.ProgressHandler);
    pes.Progress += new ProgressDelegate(this.setProgressValue);
    // Делаем видимы компонент отрисовки прогресса перехода.
    this.pbRegimeChangeProgress.Visible = true;
    // Делегат для асинхронного переключения сервера в монопольный режим.
    SwitchDel del = new SwitchDel(mServer.SwitchServerToMonopol);
    // Перевод сервера в монопольный режим.
    // Последний объект состояния -- кортеж из двух ссылок:
    // приёмник событий сервера, делегат асинхронного вызова.
    // Сделано для возможности получения результата асинхронного вызова 
    // и отключения подписки на события сервера.
    IAsyncResult ar = del.BeginInvoke(acc.Compile(RemoteParamServer.Instance.UserId), pd,
        new AsyncCallback(changeRegimeCallbackMethod), new object[] {pes, del});
}
catch(Exception ex)
{
    MessageBox.Show(this, "Во время работы приложения произошла непредвиденная ошибка. Приложение будет закрыто.\\"
        + ex.Message + "\\" + ex.StackTrace, 
        RemoteParamServer.cProgramName, 
        MessageBoxButtons.OK, MessageBoxIcon.Error);
        pes.Progress -= new ProgressDelegate(this.setProgressValue);
        this.pbRegimeChangeProgress.Visible = false;
}

Может, такое поведение связано с локальной (по отношению к клиенту) подпиской на события сервера?
Какие варианты решения проблемы можно рассмотреть?
--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0396 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.