Asp.net проблема Usercontrol LoadControl

Можно ли записывать в два разных потока (учетная запись A и B) в одной транзакции, используя EventStore?

blockquote>

Начиная с V5 RC1 (декабрь 2018 г.), я не могу найти никаких доказательств того, что Хранилище событий поддерживает скоординированную запись в несколько потоков событий.

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

Аналогия: рассмотрим банковский перевод. Как вы думаете, мы переводим деньги со счета в Bank of America на счет в Wells Fargo за одну транзакцию?

Более обычным подходом будет управление процесс передачи в собственном потоке, который отслеживает все, что произошло. Изменения в учетных записях по-прежнему происходят в их собственных потоках, изолированно друг от друга. Поток процесса отвечает за оркестровку - проверку подтверждений от других элементов.

Счастливый путь потока может выглядеть примерно так:

  1. Записать запрос на перевод в потоке процесса
  2. Записать снятие средств в потоке счета A
  3. [ 116] Запишите подтверждение снятия средств в потоке процесса
  4. . Запись депонирования средств в потоке счета B
  5. . Запишите подтверждение . депозит средств в потоке процесса
    • Запишите процесс, завершенный в потоке процесса

Но если вам действительно нужно изменить две учетные записи в в то же время , тогда вам нужно, чтобы они управлялись одним и тем же грубозернистым замком . Так как хранилище событий гарантирует блокировку только на уровне потока, вам потребуется пересмотреть модель данных.

15
задан Ash 27 October 2008 в 18:10
поделиться

4 ответа

Я попробовал следующий код также - который приводит к тому же результату (т.е. и lblTitle и lblDescription являются пустыми)

protected void Page_Load(object sender, EventArgs e)
{
    if (_ErrorMessage != null)
    {
        lblTitle.Text = _ErrorMessage.Message;
        lblDescription.Text = _ErrorMessage.Description;
    }
}

, у меня было понимание, что функция LoadControl принесла управление, которое это загружает до текущего 'состояния' страницы, на которую это включается в. следовательно Init, Page_Load и т.д. все выполняются как часть вызова LoadControl.

Интересно это (оставшееся без ответа) сообщение форумов asp.net показывает ту же проблему, как я испытываю.

Сообщение Форумов MSDN

Дополнительно - Из MSDN:

при загрузке управления в контейнерное управление контейнер генерирует все события добавленного управления, пока он не поймал до текущего события. Однако добавленное управление не догоняет обработку возвращенных данных. Чтобы добавленное управление участвовало в обработке возвращенных данных, включая проверку, управление должно быть добавлено в событии Init, а не в событии Load.

Поэтому не был должен LoadControl правильно initalise управление?

РЕДАКТИРОВАНИЕ:

хорошо, таким образом, я отвечаю на свой собственный вопрос здесь..

я нашел версию, которой отвечают, сообщения форума, которое я связал с вышеупомянутым Здесь

По существу, ответ - то, что эти LoadControl( type, params ) не может вывести 'страницу infront' ascx для парсинга, и следовательно это не беспокоит initalising ни одни из средств управления. Когда Вы используете LoadControl( "ascx path" ) версия, ей дают страницу infront и следовательно делает весь парсинг и initalision.

Так, таким образом, я должен изменить код, который является initalising управление и разделяет его на отдельные части. Т.е.

Control ErrorCntrl = LoadControl("ErrorDisplay.ascx");
ErrorCntrl.ID = SomeID;
(ErrorCntrl as ErrorDisplay).SetErrorMessage = MessageDetail;
divErrorContainer.Controls.Add(ErrorCntrl);

И это должно работать хорошо.. Это не столь аккуратно как моя предыдущая попытка, но по крайней мере это будет работать.

я все еще открыт для предложений для улучшения вышеупомянутого.

Аплодисменты

21
ответ дан 1 December 2019 в 03:44
поделиться

Соглашаясь с Mitchel, необходимо смочь поместить page_load в сам код управления, который стрелял бы после того, как средства управления абсолютно доступны.

0
ответ дан 1 December 2019 в 03:44
поделиться

Хорошо там всегда добавляет Ваше собственное событие загрузки и называет его после того, как Вы имеете, выполнил конструктора и добавил управление к странице, но это не является существенно иным, чем, что Вы имеете, хотя я мог бы выбрать его по причинам стиля.

Glad Вы нашли ответ на свою проблему!

0
ответ дан 1 December 2019 в 03:44
поделиться

В жизненный цикл страницы asp.net Ваши средства управления не полностью добавляются в предварительном рендеринге, почему Вы только не загружаете значения в page_load?

-1
ответ дан 1 December 2019 в 03:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: