21

Re: C# і MySQL Connector. Питання до богів програмування!

2TRYCUKI_V_KROVI:
Трохи порозбирав текст. Не можу сказати, що повністю зрозумів, що там і до чого, але:
- м'ютекси ви і так використовуєте, бо вони в C# реалізовані ключовим словом lock;
- якщо є потреба закривати з'єднання в функції, то це краще робити в finally. Синтаксис такий:

try
{
  ...
  чогось_там.Open();
  ...
  //нічого тут не закриваємо
}
catch (Exception e)
{
  ...
}
finally
{
  чогось_там.Close();//спрацює завжди, незалежно від того, був виняток чи ні
}

- MySqlConnection, н.м.в., розрахований на багато дій між Open та Close. І цим треба користуватися.

22

Re: C# і MySQL Connector. Питання до богів програмування!

koala написав:

2TRYCUKI_V_KROVI:
Трохи порозбирав текст. Не можу сказати, що повністю зрозумів, що там і до чого, але:
- м'ютекси ви і так використовуєте, бо вони в C# реалізовані ключовим словом lock;
- якщо є потреба закривати з'єднання в функції, то це краще робити в finally. Синтаксис такий:

try
{
  ...
  чогось_там.Open();
  ...
  //нічого тут не закриваємо
}
catch (Exception e)
{
  ...
}
finally
{
  чогось_там.Close();//спрацює завжди, незалежно від того, був виняток чи ні
}

- MySqlConnection, н.м.в., розрахований на багато дій між Open та Close. І цим треба користуватися.

так я і так закриваю з'єднання в try, щоб швидше було, так що finally то таке. Також я робив таким чином, на початку коду відкривав з'днання і не закривав його. Прості запити виконувались нормально, а от MyDataReader = myCommand.ExecuteReader() матюкався на те, що  MyDataReader вже використовується. Ну він же також має закриватись MyDataReader.Close() отже цей дата рідер має ту саму проблему, що й з'єднання. В принципі можна робити лише одне з'єднання на всіх клієнтів, але потрібно щось зробити з дата рідером. Чи створювати свій дата рідер для кожного користувача, чи ще щось.

23

Re: C# і MySQL Connector. Питання до богів програмування!

TRYCUKI_V_KROVI написав:

так я і так закриваю з'єднання в try, щоб швидше було, так що finally то таке. Також я робив таким чином, на початку коду відкривав з'днання і не закривав його. Прості запити виконувались нормально, а от MyDataReader = myCommand.ExecuteReader() матюкався на те, що  MyDataReader вже використовується. Ну він же також має закриватись MyDataReader.Close() отже цей дата рідер має ту саму проблему, що й з'єднання. В принципі можна робити лише одне з'єднання на всіх клієнтів, але потрібно щось зробити з дата рідером. Чи створювати свій дата рідер для кожного користувача, чи ще щось.

Будь ласка, не змушуйте людей бути телепатами чи перепитувати. Якщо у вас в певному коді була певна помилка, то будьте ласкаві навести той код. Бо я не бачу, яким чином незакритий MySqlConnection впливає на закритий MySqlDataReader. Навпаки - бачу, прямо - ні.

24

Re: C# і MySQL Connector. Питання до богів програмування!

Я б почав з вивчення довідки. Якісь класи напевне можна використовувати з кількох потоків одночасно, але більшість мабуть ні. Об'єкти цих класів мають бути у кожного потоку свої.
Далі, не дуже правильно створювати по окремому потоку для кожного клієнта. Для дійсно великих навантажень має сенс використовувати іншу техніку: створювати потоки в залежності від кількості ядер і процесорів. Тоді кожен потік має вміти обслуговувати кілька клієнтів одночасно. Тобто потрібно щось на зразок черги з можливістю перейти до виконання наступного елементу в черзі поки поточний заблокований тривалим запитом до бази.

25

Re: C# і MySQL Connector. Питання до богів програмування!

допоможіть найти книжку з якої варто почати вивчати С# якщо можна на українській (російська теж варіант), буду дуже вдячний .

26

Re: C# і MySQL Connector. Питання до богів програмування!

Не потрібно піднімати старі теми. Крім того в правилах сказано:

3.6. В одній темі – одне питання. Не потрібно розміщювати декілька тем з однаковим питанням або в одній темі десяток запитань.