큰 문제가 있습니다. Windows Forms에서 SqlDependency 와쳐를 구현할 때 UI 개체에 "OnChance"이벤트를 호출하는 한 모든 것이 올바르게 작동합니다. 내 수업이 ISynchronizeInvoke를 구현하지 않기 때문에 클래스에서 SqlDependency를 사용하려면 어떻게해야합니까?
private void dependency_OnChange(object sender, SqlNotificationEventArgs e)
{
if (this.InvokeRequired)
{
OnChangeEventHandler tempDelegate = new OnChangeEventHandler(dependency_OnChange); object[] args = { sender, e };
this.Invoke(tempDelegate, args);
return;
}
SqlDependency dependency = (SqlDependency)sender;
dependency.OnChange -= dependency_OnChange;
SetSqlWatcher();
}
I 클래스 내 메소드를 이동하는 경우
, 나는, 호출 및 InvokeRequired을 할 수 아니에요. 나는이 라인을 주석 경우, 프로그램은 "SetSqlWatcher"의 첫 번째 줄에 중단 :SqlDependency.Stop("Data Source=[....]");
나는 windowsform에서이 라인을 주석 때 같은 일이 발생, 그래서 나는 _OnChance 이벤트가 다른 스레드가 아닌 상이라고 생각 처음에 SetSqlWatcher를 호출 할 때 사용하는 "스레드".
또한 (libary http://nitoasync.codeplex.com의 GenericSynchronizingObject를 사용하여) ISynchronizeInvoke를 구현하려고했습니다. 나는 처음에 코드를 호출해야한다는 것을 디버깅 해 보았지만 "SqlDependency.Stop"에도 걸려있다 ...
누군가가 나를 도울 수 있었고, 왜 이것이 작동하지 않는지 설명 할 수있다. ?
대단히 감사합니다! 안부 토마스