my objective is to interrupt an running operation if it exceeds a certain amount of time (.NET Framework 4.0).
The operation is a method that changes some labels in a form.
After reading the accepted answer here, I tried to adapt it in order to be able to access the labels in a form (because the solution proposed there wouldn't allow me to do that: "Cross-thread operation not valid: Control 'label1' accessed from a thread other than the thread it was created on.").
So I came to this:
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        try
        {
            Thread t = new Thread(TestMethod);
            t.Start();
            if (!t.Join(TimeSpan.FromSeconds(2)))
            {
                t.Abort();
                label1.Text = "-";
                label2.Text = "Timed out!";
            }
            else
            {
                label1.Text = y.ToString();
                label2.Text = "Completed!";                    
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }                      
    }
    int y;
    private void TestMethod()
    {
        try
        {
            for (int x = 0; x < 6; x++)
            {
                Thread.Sleep(1000);
                y = x; //Used the global variable "y" here because label1 cannot be directly accessed from this thread.                    
            }
        }
        catch (ThreadAbortException)
        {
            // cleanup code, if needed...
        }            
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }          
    }
}
It seems to work fine.
But I'm wondering: is this is a "correct" way of doing it? Is there something I'm missing? Is there a another better/simpler way (for .NET Framework 4.0)?
Thanks in advance.
