嗨,我已经将表单上下文发送到另一个类来运行那里的函数,但是有趣的是显示消息框而不是更新表单文本,为什么?
这是表格类
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication8
{
public partial class Form1 : Form
{
public Form1()
{
//form constractor
InitializeComponent();
}
timer mytimer;
private void Form1_Load(object sender, EventArgs e)
{
}
private void Elipse()
{ //the code for timer :) //yazeed coding
//MessageBox.Show(" ");
this.Text=" jkghjg";
}
private void button1_Click(object sender, EventArgs e)
{
mytimer = new timer();
mytimer.elipse += Elipse;
mytimer.Interval = 1000;
mytimer.start(this);
}
}
}
这是计时器类
class timer
{
bool isstart;
public delegate void Del();
public Del elipse;
public static void UserRep() { }
public bool Enable { get; set; }
public int Interval { get; set; }
public timer()
{
Enable = false;
Interval = 1000;//default is 1 sec
isstart = false;
elipse = new Del(UserRep);
}
public void start(Form Context)
{
Context.BeginInvoke((MethodInvoker)async delegate
{
Enable = true;
isstart = true;
do
{
await Task.Delay(Interval);
new Thread(() =>
{
elipse(); //the replacment running now (interface thrad protected)
}).Start();
}
while (isstart);
Enable = false;
});
}
public void stop()
{
isstart = false;
}
}
并感谢
答案 0 :(得分:1)
当你开始一个新线程时,你需要在Form上下文中调用elipse:
替换:
new Thread(() =>
{
elipse();
}).Start();
带
new Thread(() =>
{
Context.BeginInvoke(elipse);
}).Start();
答案 1 :(得分:0)
感谢罗伯特,良好的改进,代码运行成功我添加帖子,看看别人怎么说,代码正确:)我保持这样的方法,让其他开发人员了解这一点他们可以在这里添加更多代码
这里是
any