Премини към съдържанието

Препоръчан отговор


Здравейте,

Не съм се занимавал много с програмиране, но ето, че ме помолиха да направя една малка програмка за писане и четене от БД.

Всияко работи ОК, но малко се замотва при четене, т.к. е през мрежа. Опитах да сложа текст "Изчакайте" докато "рови" в базата, но не става. Ето кода:

private void btn_Search_Click(object sender, EvevtArgs e)

{

lbl_Wait.Visible = true;

retrieve();

lbl_Wait.Visible = false;

}

retrieve(); чете каквото трябва от базата и попълва datagridview.

 

lbl_Wait не светва изобщо. Работи сякаш е така редът на командите:

{

retrieve();

lbl_Wait.Visible = true;

lbl_Wait.Visible = false;

}

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

През мрежа не трябва ли да си влючиш токени(това май беше нещо като бисквитка,  записана в достъпваната база данни), за да не трябва при всеки следващ достъп да минаваш нова пълна автентификация и да си с приоритет като собственик на базата данни? Признавам че доста съм забравил, така че може да съм написал абсолютна глупост, а и по начало почти нищо не знам, так че не съм дори на равна нога с автора на темата, но ми е интересно  решението на проблема.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Това е класически "проблем" с класически решение. Проблемът се изразява в блокиране на UI нишката а решението е това което блокира нишката (четенето от базата данни) да се изнесе в отделна нишка.

Отделно, бавенето може да е в следствие на лош дизайн на базата данни (липсващи индекси да речем). Но като цяло, задължително, четенето и писането в база данни се правят асинхронно (на отделна нишка).

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Мина малко време...

Благодаря за отговорите.

Добавих индекси и нещата чувствително се забързаха. Работи абсолютно приемливо. Да се правят различни нишки за това проектче  не си заслужава.

Въпросът беше за реда на командите. В дебъг се вижда, че се изпълняват коректно. Проблемът и заблудата идват от това, че не се опреснява формата. (То и въпросът ми не е зададен съвсем правилно.)

this.Refresh(); преди retrieve(); решава пробема.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
if (!retrieve) {
lbl.text ="bazata e svobododna";
}

else 
lbl.text="waiting..."

Кода сравнява дали базата работи ако не работи пише свободно иначе пише чакайте


Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.