私はmutithreadされる必要があるプロジェクトを継承しました。ワーカースレッドで使用される3つの主要なクラスがあります。マルチスレッドアプリケーションでクラス変数を使用するのは悪いですか?
ベースクラス - クラスレベルのSqlDataAdapterとDataTableを持っています。 INHERITED CLASS ONE - 継承されたSqlDataAdapterおよびDataTableを使用します。 INHERITED CLASS TWO - 継承されたSqlDataAdapterとDataTableを使用します。
すべてのことがうまく機能しますが、同時に2人のユーザーしかテストしません。
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;
}
...
}
}
スレッドの安全性またはSQLTableAadaptorとDataTableの知識がなくても、言うことはできません。 –
@ NitroxDM、それはちょうど私ですが、あなたはあなたの質問のどこででもあなたが使っている言語について言及しましたか? SQLTableAdapterはVB.NetまたはC#または他の言語の機能ですか?言語は答えに違いを生むかもしれません。 –