Я унаследовал проект, который должен быть многопоточным. В рабочих потоках используются три основных класса.
BASE CLASS - имеет уровень класса SqlDataAdapter и DataTable.
Унаследованный класс один - использует унаследованные SqlDataAdapter и DataTable.
Унаследованный второй класс - использует унаследованные SqlDataAdapter и DataTable.
Все работает, но у меня одновременно тестируют только два пользователя.
Является ли SqlDataAdapter и DataTable переменными уровня класса - плохая идея?
Обновление
Извините, это SqlDataAdapter, а не SqlTableAdapter. Язык C #. SqlDataAdapter и DataTable взяты из пространства имен System.Data.SqlClient.
Вот некоторые из базового класса:
public abstract class BaseSync
{
#region Variables
internal SqlDataAdapter stageDataAdapter;
internal DataTable stageDataTable;
#endregion //Variables
}
Часть вторая
Существует также одноэлементный служебный класс, который используют все производные классы. Я не знаю, вызовет ли это проблемы или нет. Это выглядит так:
public class Utility
{
private static readonly Utility _utility= new Utility();
private Utility()
{ }
public static Utility GetUtility()
{
return _utility;
}
public int GetAutoNumber(string tablename, string fieldname, string siteId)
{
string _tablename = tablename;
string _fieldname = fieldname;
...
}
internal MissingInfo NormalizeRow(DataRow dataRow)
{
MissingInfo retVal = MissingInfo.None;
//Num
if (dataRow["Num"] == DBNull.Value)
{
retVal =MissingInfo.Num;
dataRow["Num"] = 1;
}
...
}
}