2010-01-10 4 views
0

У меня есть класс GUI и класс базы данных. Я делаю что-то вроде:Параметры ведения журнала с BackgroundWorker в VB.net

Dim db as Database = getDatabaseObject(logTxtBox) 
db.executeNonQuery("some update command here") 

В ExecuteNonQuery подключиться к БД, выполнить команду, отключиться и перехватывать исключения. logTxtBox - это окно с графическим интерфейсом GUI. Я хочу записать сообщения журнала. В настоящее время он пишет что-то вроде:

Connected to DB successfully 
Executing "some update command here" 
Excepetion: ........ 
Disconnecting from DB 

Я чувствую, что это не лучшая структура для моего ведения журнала. Как только я запускаю executeNonQuery с BackgroundWorker вместо основного потока GUI, я не могу получить доступ к logTxtBox графического интерфейса из потока BackgroundWorker.

Есть ли лучший способ реализовать такие функции?

Благодарения и

Джонатан

ответ

0

Чтобы использовать компонент пользовательского интерфейса от фонового потока убедитесь, что вы используете Control.Invoke(), чтобы убедиться, что код работает в потоке пользовательского интерфейса.

Вот некоторые C# код, который вызывает метод в потоке пользовательского интерфейса и передает в качестве параметра:

this.Invoke(new Action<string>(MyMethod), "something to log"); 

    private void MyMethod(string logData) { 
     // set some text here 
    } 
0

Вы можете поднять события в пределах своего класса базы данных обрабатывать эти события в пользовательском интерфейсе. Например, вы можете создать пользовательское событие «StatusChanged» и передать текущее состояние в eventargs.

Смежные вопросы