В настоящее время я пишу C # dll для использования в качестве внутреннего движка для приложений с графическим интерфейсом (формы Windows), которые хотят его использовать.Двигатель может находиться в одном из нескольких предварительно определенных состояний, например, Загрузка, На холостом ходу, Работать и т. Д., Который контролируется специалистом по фону.Я хочу, чтобы приложения с графическим интерфейсом, которые используют эту dll, могли выполнять действия и привязывать свойства элемента управления к свойствам в движке, в частности к текущему состоянию, в котором находится движок. Например, я хочу, чтобы приложения, которые используют движок для отключения действий и элементов управления на основеот того, работает двигатель или нет.Чтобы сделать это, я создал свойство только для чтения в движке следующим образом:
public Class Engine
{
// Make the class a singleton
private static Engine instance;
public static Engine Instance
{
get
{
if (instance == null)
instance = new Engine();
return instance;
}
}
// ... Class code altering the engines current state
public bool Property IsActive
{
get
{
return (EngineState != State.Idle);
}
}
}
Где State - перечислитель всех возможных состояний, а EngineState - текущее состояние.Чтобы проверить это свойство, я написал приложение для быстрой формы Windows, в котором я хочу, чтобы кнопка была включена, если движок активен.Чтобы сделать это, я попытался привязать свойство Enabled следующим образом:
public Class TestApp
{
Engine MyEngine = Engine.Instance;
TestApp
{
Button_DoAction.DataBindings.Add("Enabled", MyEngine, "IsActive");
}
// ... Button handlers etc.
}
Эта привязка, кажется, работает при первой загрузке приложения, но когда свойство IsActive изменяется внутри dll, т.е. Engine переходит из Active в Idleсвойство Enabled кнопки не изменяется.
Так что мне просто интересно, возможно ли то, что я пытаюсь сделать?Имеет ли значение тот факт, что Engine является синглтоном и записан во внешней DLL?Любая обратная связь будет отличной помощью.
Заранее спасибо.