동일한 C# 솔루션으로 2 개의 프로젝트가 있습니다. 하나의 프로젝트는 일반적인 wpf 응용 프로그램이고 다른 프로젝트는 windows 서비스입니다. wpf 응용 프로그램이 데이터베이스의 일부 변수를 업데이트하면 Windows 서비스가 그에 따라 업데이트해야합니다. 내 WPF 응용 프로그램에서 , 내가 Windows 서비스 프로젝트에서정적 데이터 멤버가 동일한 솔루션에서 2 개의 프로젝트에 공유되지 않음 C#
private void ConfigurationPanelSave_Click(object sender, RoutedEventArgs e)
{
bool isSuccess = SaveData();
if (isSuccess)
{
DatabaseInteractivity.HasChanges = true; //static member to indicate data has been changed
}
}
같은 정적 필드를 업데이트하는 저장 방법을 가지고, 내가 DatabaseInteractivity 객체 30 초 간격 이후에 호출되는 타이머 이벤트가 (데이터가 있는지 확인합니다 이 변경된 경우, 변경된 사실을 DatabaseInteractivity 클래스의 일부 구성)
private void timer_elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (DatabaseInteractivity.HasChanges)
{
ConfigurationReader.ReadConfiguration();
DatabaseInteractivity.HasChanges = false;
}
}
난 WPF 애플리케이션을 통해 데이터를 저장할 때 문제가있다, 그것이 고정 부재 (HasChanges을 갱신)를 다시 판독 timer_elapsed 때 이벤트는 윈도우 서비스 프로젝트에서 HasChanges는 항상 거짓입니다. 타이머 이벤트가 처음으로 호출되면 안됩니까? 많은 기사와 다른 접근법을 읽었지 만 왜 그런 일이 일어나지 않는지 알고 싶습니다.
두 개의 개별 실행 파일입니다. 그런 정적 속성을 사용할 수 없습니다. 정적 속성은 동일한 프로세스 내에서만 공유됩니다. – pquest
다른 프로젝트에서 하나의 프로젝트를 참조 했더라도? http://stackoverflow.com/questions/8209345/share-variables-between-projects –
@pquest 엄밀히 말하면 각 'AppDomain'에는 정적 필드의 자체 복사본이 있습니다. 따라서 * 정적 속성은 동일한 'AppDomain' 프로세스 내에서만 공유됩니다. * –