Могу ли я попросить Castle Windsor создать компонент в отдельном домене приложений? - PullRequest
2 голосов
/ 25 августа 2009

Я создал многопоточный сервис, который использует Castle Windsor для создания компонентов для работы в отдельных потоках. Разрешаю компонент по имени с параметрами для каждого потока.

У меня проблемы с параллелизмом при использовании сторонней библиотеки, используемой компонентами. Я подозреваю, что изоляция этих компонентов в отдельных доменах приложений решит проблему.

Можно ли с помощью Resolve создать компонент с использованием другого домена приложений?

private ActivityThread NewActivityThread(ActivityInstance activityInstance)
{
    // Set up the creation arguments.
    System.Collections.IDictionary arguments = new Dictionary<string, string>();
    activityInstance.Parameters.ForEach(p => arguments.Add(p.Name, p.Value));

    // Get the activity handler from the container.
    IActivity activity = Program.Container.Resolve<IActivity>(activityInstance.Name, arguments);

    // Create a thread for the activity.
    ActivityThread thread = new ActivityThread(activity, activityInstance, _nextActivityID++);
    return thread;
}

public ActivityThread(IActivity activity, ActivityInstance instance, int id)
{
    _activity = activity;
    _instance = instance;
    _id = id;
}

public void Start()
{
    if (_thread == null)
    {
        // Create a new thread to run this activity.
        _thread = new Thread(delegate() { _activity.Run(); });
        _thread.Name = _activity.ToString();
        _thread.SetApartmentState(ApartmentState.STA);
        _thread.Start();
    }
}

Ответы [ 2 ]

2 голосов
/ 18 марта 2010

Попробуйте средство удаленного взаимодействия. См:

1 голос
/ 03 марта 2010

Если вы уже создали отдельный домен приложений, не можете ли вы просто создать новый экземпляр контейнера Windsor в частном домене приложений?

...