c#,winform跨线程更改ui组件,出错,求大神帮帮忙

以下是截图:
图片说明

源码:

 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 WindowsFormsApplication1
{


    public partial class Form1 : Form
    {
        private delegate void d(int a, int b);
        d dt;
        public Form1()
        {
            InitializeComponent();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            int a = int.Parse(textBox1.Text);
            int b =int.Parse(textBox2.Text);
            Thread t = new Thread(()=>ThreadTest(a,b));
            t.Start();

            textBox1.Text = "a";
        }

        private void Result(int a,int b)
        {
            label1.Visible = true;
            label1.Text = Convert.ToString(a, b);
        }

        private void ThreadTest(int a,int b)
        {
            if (label1.InvokeRequired)
            {
                while (!label1.IsHandleCreated)
                {
                    if (label1.Disposing || label1.IsDisposed)
                        return;

                }
                dt = new d(Result);
                label1.Invoke(dt, new object[] { a, b });
            }
            else label1.Text = Convert.ToString(a + b);

        }
    }


}

运行的时候
图片说明

按了button后:
图片说明
一直这样,有时还会在int a=Convert.ToInt32(textBox1.Text)报字符串转换为datetime应先分析什么什么的,我这里根本就没转为字符串格式。
求大神指点指点

贴出报错信息,按照你的图看,textBox1.Text如果是a的话,那么肯定不能转换为Int32
但是你的代码根本没有什么DateTime,怎么可能报那样的错。

你成功的让我打开vs了,一直不理解Convert.ToString(a, b),总觉得我知道得好少,各种找资料只看到概念性的东西,实验了一遍,大概得出的结论。
你逗我的吧!写错了吧,是a+b吧,跟else里要用的是同一个操作是吧,要算出两个数的和是吧。
吐槽完了再说说为什么出现a,经实验Convert.ToString(int32, int32)是返回以第一个数的第二个数的进制,一般不是2,8,10,16会报错,至于楼主为什么没有应该是自动转为最接近的16了,结果就是10的16进制、、、、、估计这后面的没人看了...好冷清的感觉