Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу разобраться с кодом! 
V
    Опции темы
vikaz
Дата 8.9.2010, 06:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 1
Всего: 12



Всем привет! Перевожу код из приложения написанного на WindowsForms в WPF. Есть вот такая функция:
Код

        private void EnableControls(bool bEnable)
        {
            // Do not change the state control during application closing.
            if( m_bExit )
                return;
            if (this.InvokeRequired)
            {
                EnableControlsCallback d = new EnableControlsCallback(this.EnableControls);
                this.Invoke( d, new object[] { bEnable } );
            }
            else
            {
                btnEnroll.Enabled = bEnable;
                btnIdentify.Enabled = bEnable;
                btnVerify.Enabled = bEnable;
                btnStop.Enabled = !bEnable;
            }
        }


, где:
 EnableControlsCallback - делегат
 
Код

delegate void EnableControlsCallback(bool bEnable );


m_bExit - переменная
Код

private bool m_bExit;


btnEnroll, btnIdentify, btnVerify, btnStop - кнопки на форме.

Суть вопроса: не могу понять, как запустить this.InvokeRequired и все что связано с Invoke. Посмотрел по MSDN, там написано, что для этого нужно импортировать System.ComponentModel. Импортировал, не помогло....


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
mrbrooks
Дата 8.9.2010, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Цитата(vikaz @  8.9.2010,  07:54 Найти цитируемый пост)
Суть вопроса: не могу понять, как запустить this.InvokeRequired и все что связано с Invoke.

в смысле запустить?
сдается мне в отдельном потоке. само по себе все вышеперечисленное ничего не делает.
PM MAIL   Вверх
vikaz
Дата 8.9.2010, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 1
Всего: 12



Цитата(mrbrooks @  8.9.2010,  09:50 Найти цитируемый пост)
в смысле запустить?
сдается мне в отдельном потоке. само по себе все вышеперечисленное ничего не делает. 

 smile в смысле повторить подобный код. Если он только для WindowsForms, то как это перевести для проекта WPF


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
CYBERDREAM
Дата 8.9.2010, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 3
Всего: 28



Привет vikaz, 
http://social.msdn.microsoft.com/forums/en...f9-a3449f05eb55
как видится делается через Dispatcher object
тобишь тут будет нечто вроде
Код

private void EnableControls(bool bEnable)
{
    // Do not change the state control during application closing.
    if (m_bExit)
        return;
    if (this.Dispatcher.CheckAccess())
    {
        EnableControlsCallback d = new EnableControlsCallback(this.EnableControls);
        this.Dispatcher.Invoke(d, new object[] { bEnable });
    }
    else
    {
                   .....
    }
}



--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
vikaz
Дата 8.9.2010, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 1
Всего: 12



Спасибо огромное! Попробую....

Это сообщение отредактировал(а) vikaz - 8.9.2010, 15:07


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
vikaz
Дата 9.9.2010, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 1
Всего: 12



Не хочет работать нормально, вот такая ошибка возникает:
user posted image

вот сам код:
Код

 private void EnabledControls(bool bEnable)
        {
           
            if (m_bExit) return;
            if (this.Dispatcher.CheckAccess())
            {
                 EnableControlsCallback d = new EnableControlsCallback(this.EnabledControls);
                 this.Dispatcher.Invoke(d,new object [] {bEnable});
            }
            else 
            {
                btnEnroll.IsEnabled = bEnable;
                btnIdentify.IsEnabled = bEnable;
                btnVerify.IsEnabled = bEnable;
                btnStop.IsEnabled = !bEnable;
            }

        }



--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
vikaz
Дата 9.9.2010, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 1
Всего: 12



В общем, надо включать голову! smile (это я себе)
код должен быть таким: 
Код

 if (!this.Dispatcher.CheckAccess())
            {
                 EnableControlsCallback d = new EnableControlsCallback(this.EnabledControls);
                 this.Dispatcher.Invoke(d, new object[] { bEnable });
            }

ну или еще проще:
Код

 if (!this.Dispatcher.CheckAccess()) this.Dispatcher.Invoke(new EnableControlsCallback(this.EnabledControls), new object[] { bEnable });


ЗЫ! Осталось преобразовать bitmap и пол дела сделано! smile


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




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


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

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