Параметры ведения журнала с BackgroundWorker в VB.net - PullRequest
0 голосов
/ 11 января 2010

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

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 GUI из потока BackgroundWorker.

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

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

Jonathan

Ответы [ 2 ]

0 голосов
/ 11 января 2010

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

0 голосов
/ 11 января 2010

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

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

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

    private void MyMethod(string logData) {
        // set some text here
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...