Почему событие Application_Start() не стреляет, когда я отлаживаю свое приложение MVC ASP.NET?

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

Я использую Xamarin.Android, однако это должно относиться к любому сценарию C # ...

private Subject<string> typingSubject = new Subject<string> ();
private IDisposable typingEventSequence;

private void Init () {
            var searchText = layoutView.FindViewById<EditText> (Resource.Id.search_text);
            searchText.TextChanged += SearchTextChanged;
            typingEventSequence = typingSubject.Throttle (TimeSpan.FromSeconds (1))
                .Subscribe (query => suggestionsAdapter.Get (query));
}

private void SearchTextChanged (object sender, TextChangedEventArgs e) {
            var searchText = layoutView.FindViewById<EditText> (Resource.Id.search_text);
            typingSubject.OnNext (searchText.Text.Trim ());
        }

public override void OnDestroy () {
            if (typingEventSequence != null)
                typingEventSequence.Dispose ();
            base.OnDestroy ();
        }

Когда вы сначала инициализируете экран / класс, вы создаете событие для прослушивания ввода текста пользователем (SearchTextChanged), а затем также настраиваете регулирующую подписку, которая привязана к «typingSubject».

Далее, в вашем событии SearchTextChanged вы можете вызвать typingSubject.OnNext и передать текст в поле поиска. По истечении периода ожидания (1 секунда) он вызовет подписанное событие (предположения, Adapter.Get в нашем случае.)

Наконец, когда экран закрыт, убедитесь, что вы удалили подписку!

68
задан Tomas Aschan 9 June 2009 в 01:51
поделиться

2 ответа

Я обнаружил проблему:

Это приложение MVC было частью более крупного решения, в котором я однажды установил другой проект для сборки для среды x86 (я использую x64 ). Когда я это сделал, очевидно, что все другие проекты - даже те, которые были добавлены позже - были настроены не использовать Ctrl + Shift + B , и я полагаю, что именно поэтому отладчик не достиг моей точки останова.

Решение:

Перейдите в свойства сборки решения (щелкните правой кнопкой мыши «Решение», выберите «Свойства» и выберите «Сборка» в меню слева) и установите флажок «Сборка» рядом с именем проекта в списке.

6
ответ дан 24 November 2019 в 14:06
поделиться

Я считаю, что вам нужно выключить / остановить локальный сервер отладки, чтобы событие Application_Start () снова сработало ... вы должны иметь возможность Щелкните его правой кнопкой мыши на панели задач и выберите «Стоп».

18
ответ дан 24 November 2019 в 14:06
поделиться
Другие вопросы по тегам:

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