Итак, ради изучения использования потоков, я сделал небольшую программу, которая должна принимать имена и хранить их в списке, а затем показывать имена в другой форме один за другим. Итак, вот код:Когда я использую Threads для вызова другой формы и покажу ее, компоненты (метка) не работают должным образом
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
namespace ListingThread
{
public partial class Form1 : Form
{
public Thread t;
public static int ShowNo = 0;
public Form1()
{
InitializeComponent();
GlobalForm = new Form();
GlobalForm.Show();
GlobalForm.Hide();
t = new Thread(ShowList);
}
public Form GlobalForm;
public static List<string> Names = new List<string>();
private void Form1_Load(object sender, EventArgs e)
{
}
private void btnAddName_Click(object sender, EventArgs e)
{
AddName(txtName.Text);
txtName.Text = null;
}
public void AddName(string x)
{
Names.Add(x);
}
private void btnShow_Click(object sender, EventArgs e)
{
Showw();
}
public void Showw()
{
t.Start();
}
public void ShowList()
{
if (ShowNo < Names.Capacity)
{
GlobalForm.Invoke((MethodInvoker)delegate()
{
CustomMessageBox Msg = new CustomMessageBox();
try { Msg.lblName.Text = Names[ShowNo];
}
catch
{
t.Abort();
}
Msg.Show();
Thread.Sleep(500);
Msg.Close();
ShowNo++;
ShowList();
});
}
else
{
t.Abort();
}
}
}
}
Другая форма просто имеет один ярлык с именем lblName: The Second Form http://image.prntscr.com/image/5b8bd837c5a849adbf3531ed7e366424.png
Но когда я запускаю это происходит: /:
Как вы можете видеть , эти метки не работают должным образом:/ Они показаны следующим образом: Broken Label http://image.prntscr.com/image/1a0f9731f8f74fc1914ce8622a9f7a72.png
'ShowNo' Names.Count' возможно? –
AlexD
Я изменил его на то, что вы сказали, но он все еще не работает: /. Я думаю, что проблема здесь немного сложнее. – Anopey
Форматы блеба должны работать на потоке пользовательского интерфейса. – stuartd