重複した質問に対してお詫び申し上げます。私はグーグルで、どこでも質問だけしか見つけられませんでしたが、成功した解決策はありませんでした。私はちょうどhereとhereと同じ問題に直面しており、先週から苦労しましたが、何も成功しなかったので、ここで質問をすることにしました。私はこれらの質問に示唆されたコメントに従うことで、それを自分自身で解決しようとしましたが、成功しました。私は、インスタンスまたはユーザーがログインしているためSqlDependencyのonchangeイベントは、任意の数のために一度だけ起動するようにしたい。SqlDependency onchangeがブラウザインスタンスごとに複数回起動する
このメソッドは、一度だけ呼び出されるたびにアプリケーション
public List<TransactionMaster> GetUnregisteredTransactions()
{
List<TransactionMaster> ltrans = new List<TransactionMaster>();
TransactionMaster trans = new TransactionMaster();
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
{
string query = "SELECT TransId, ReceivedFrom,ReceivedOn,Mask FROM [dbo].TransactionMaster WHERE StageId =1";
SqlDependency.Start(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
using (SqlCommand cmd = new SqlCommand(query, connection))
{
cmd.Notification = null;
DataTable dt = new DataTable();
SqlDependency dependency = new SqlDependency(cmd);
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
if (connection.State == ConnectionState.Closed)
connection.Open();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dt);
ltrans = dal.ConvertDataTable<TransactionMaster>(dt);
}
}
return ltrans;
}
そして再び、このメソッドが呼び出されるに、新しいユーザログインonchangeイベント
private void dependency_OnChange(object sender, SqlNotificationEventArgs e)
{
if (e.Type == SqlNotificationType.Change)
TransactionHub.GetUnregTransactions(GetUnregisteredTransactions());
}
重複していますが、関連情報をここに掲載できますか? – Stefan
はい、質問を編集しました。 –
退出を提案してください。 –