Использование метода invoker в операторе if
То, что я пытаюсь сделать, это проверить, выбран ли элемент в списке.
Метод запускается в отдельном потоке, поэтому я должен использовать метод invoker, я считаю.
string list = "";
lbxList.Invoke(new MethodInvoker(delegate { list = lbxList.SelectedItem.ToString(); }));
if (list != null)
{
//do something
}
этот код будет взорван, если выбранный элемент будет нулевым, потому что список строк не будет содержать его, поэтому мне нужен способ объединить две верхние строки в оператор if, проверяющий нулевое значение.
Спасибо
1 ответ
Это должно сделать:
string list = "";
lbxList.Invoke(new MethodInvoker(delegate
{
if (lbxList.SelectedItem != null)
list = lbxList.SelectedItem.ToString();
}));
//do something
Просто поместите оператор if внутри анонимного метода.
Обратите внимание, что .ToString
вряд ли когда-либо вернется null
для чего-либо, документацияobject.ToString
утверждает, что переопределяющие типы должны реализовывать метод для возврата значимого значения. Поскольку мы уже знаем, что .SelectedItem
не является нулевым, проверка на нулевое значение не является действительно необходимой. Вы можете оставить это, если вы действительно хотите, но если вы боитесь, что .ToString
должен вернуть ноль, я бы вместо этого изменил код на это:
string list = "";
lbxList.Invoke(new MethodInvoker(delegate
{
if (lbxList.SelectedItem != null)
list = lbxList.SelectedItem.ToString() ?? string.Empty;
}));
//do something