중복 질문에 대해 사과하십시오. 나는 봤어 도처에 나는 단지 질문을 찾았지만 성공적인 해결책이 없었다. 나는 똑같은 문제를 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
예, 질문을 수정했습니다. –
퇴장을 제안하십시오. –