У меня есть два разных проекта, и в одном у меня есть класс, который определяет настраиваемое событие для запуска при определенных условиях:
public delegate void ButtonHandler(object myObject,
GuitarArgs myargs);
public event ButtonHandler OnButtonPress;
... other stuff ...
GuitarArgs myArgs = new GuitarArgs( guitarState );
if(OnButtonPress!= null)
OnButtonPress(this, myArgs);
Затем в другом проекте я создаю экземпляр этого класса и подписываюсь на это событие:
Guitar.OnButtonPress += Guitar_OnButtonPress;
Событие затем запускается правильно, но, похоже, оно происходит в другом потоке, потому что, когда я пытаюсь получить доступ к некоторым элементам пользовательского интерфейса, я получаю сообщение об ошибке: вызывающий поток не может получить доступ к этому объекту, поскольку другой поток владеет им. *
Код, выдавший ошибку:
void Guitar_OnButtonPress(object myObject, Guitar.GuitarArgs myargs)
{
GuitarCheck(myargs.State);
}
private void GuitarCheck(GuitarState getState)
{
if (getState.green)
{
VisualTreeHelper.HitTest(guitarCanvas, null,
MyHitTestResult,
new GeometryHitTestParameters(
new RectangleGeometry(new Rect(1, 411, 88, 78))));
}
}
Что я могу сделать, чтобы запустить?
Спасибо.