マルチスレッドアプリケーションでクラスのインスタンスを使用することについてもっと明確にしたいと考えています:
異なるスレッドで同じクラスのインスタンスを使用できますか?つまり、は同じクラスの異なるスレッドインスタンスで作成できますか?例えば異なるスレッドで1つのクラスのインスタンスを使用する
:
私はそのデフォルトコンストラクタ内の接続文字列を取得し、パブリックプロパティを使用して接続文字列が表示されるようクラスDbConnectionHelper
を持っている:
public class DbConnectionHelper
{
string connstring;
public DbConnectionHelper()
{
string userconnstring = Settings.Default.ConnectionString;
connstring = GetConnectionString(userconnstring);
...
}
public string ConnString
{
get
{
return connstring;
}
set
{
connstring = value;
}
}
...
それから私は、リポジトリクラスの数を持っていますEntity Frameworkを使用してデータベースからデータを取得します。これらのリポジトリクラスの中には、UIスレッド内にインスタンスを持つものもあれば、UI以外のスレッドにインスタンスを持つものもあります。
これらのリポジトリクラスはすべて、1つのクラスDbConnectionHelperのインスタンスを作成してConnStringプロパティを読み取ることで接続文字列を取得できますか?同じクラスの
DBConnectionHelper connhelper = new DBConnectionHelper();
string conn = connhelper.ConnString;
簡易回答:はい。クラス/オブジェクトとスレッドの間には関係がありません。スレッドに対してのみコードが実行されます。 –