Сокетинг не работает в моем коде, поэтому я хотел спросить, может ли кто-нибудь помочь мне. У меня это до сих пор:Отображение/скрытие метки другой темой
private void searchList_TextChanged(object sender, EventArgs e)
{
Thread th = new Thread(new ThreadStart(setLabel));
th.IsBackground = true;
th.Start();
//some code that needs time
if (searchBox.Text == String.Empty)
{
listViewType.Items.Clear();
fillListView();
}
else
{
listViewType.Items.Clear();
var matchings = stringTypes.FindAll(delegate(string s) { return s.StartsWith(searchBox.Text); });
for (int i = 0; i < matchings.Count; i++)
{
ListViewItem storeMatched = new ListViewItem(matchings[i]);
storeMatched.SubItems.Add(matchings[i]);
listViewType.Items.Add(storeMatched);
}
th.Abort();
searchLabel.Visible = false;
}
private void setLabel()
{
MethodInvoker set =() => searchLabel.Visible = true;
searchLabel.BeginInvoke(set);
}
Так что searchLabel - это ярлык, который я хочу показать/скрыть. Я попытался показать ярлык перед началом операции и скрыть его после завершения. Как-то он отображается после выполнения кода (// некоторый код, который требует времени), а затем остается видимым. Как правильно это закодировать?
Весь процесс для меня непонятен. Кажется более логичным поставить «код, требующий времени» в фоновый поток. В потоке пользовательского интерфейса (или основного потока) вы должны легко изменить видимый статус метки. После этого просто вызовите Visible status в True в фоновом потоке после его завершения. – Szer
Я хотел сделать так. Является ли это возможным? Я попробовал «Invoke» сейчас, но он все тот же –
посмотри на мой ответ ниже – Szer