C# 从外部计时器刷新数据网格 Class
C# refresh datagrid from a external Timer Class
我尝试从外部计时器刷新数据网格视图Class每次我尝试这个我都会出现错误:线程综合不允许
Form1.cs:
public void Main_Window_Load(object sender, EventArgs e)
{
SetDatagridView();
}
public void SetDatagridView()
{
DataTable MBServices = new DataTable();
DataView MBServicesVW = new DataView();
MBServices = getMasterServicetblOverview("8");
MBServices.Columns.Add("State", typeof(Image));
MBServices.Columns.Remove("state");
MBServicesVW = new DataView(MBServices);
dataGridSHToverview.DataSource = MBServicesVW;
}
Timer.cs:
class Timer
{
public class NamedTimer : System.Timers.Timer
{
}
public static void TimerDo()
{
Timer timer = new Timer();
timer.Interval = (60000);
timer.Elapsed += Main_Tick;
timer.AutoReset = false;
timer.Start();
}
public static void Main_Tick(object sender, EventArgs args)
{
//there a want to call SetDatagridView()
}
}
timerDo() 将在 master 中调用 Class.
感谢您对我们的帮助
我建议你使用事件模式。
示例代码:
/// TimerManager class
public class TimerManager
{
public void TimerDo()
{
Timer timer = new Timer();
timer.Interval = (60000);
timer.Elapsed += Main_Tick;
timer.AutoReset = false;
timer.Start();
}
public void Main_Tick(object sender, EventArgs args)
{
if (OnTimerManagerTick != null)
OnTimerManagerTick(sender, args);
}
public delegate void TimerTick(object sender, EventArgs args);
public event TimerTick OnTimerManagerTick;
}
///Form1 Class
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
InitDataGridView();
TimerManager timerManager = new TimerManager();
timerManager.OnTimerManagerTick += TimerManager_OnTimerManagerTick;
}
private void TimerManager_OnTimerManagerTick(object sender, EventArgs args)
{
InitDataGridView();
}
private void InitDataGridView()
{
List<PersonTest> personTests = new List<PersonTest>
{
new PersonTest{Name = "Luiz", LastName = "Oliveira", Age = 35},
new PersonTest{Name = "Another", LastName = "Person", Age = 25},
new PersonTest{Name = "Neymar", LastName = "Junior", Age = 28},
};
dgvTestDbClick.DataSource = personTests;
}
}
public class PersonTest
{
public string Name { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
我尝试从外部计时器刷新数据网格视图Class每次我尝试这个我都会出现错误:线程综合不允许
Form1.cs:
public void Main_Window_Load(object sender, EventArgs e)
{
SetDatagridView();
}
public void SetDatagridView()
{
DataTable MBServices = new DataTable();
DataView MBServicesVW = new DataView();
MBServices = getMasterServicetblOverview("8");
MBServices.Columns.Add("State", typeof(Image));
MBServices.Columns.Remove("state");
MBServicesVW = new DataView(MBServices);
dataGridSHToverview.DataSource = MBServicesVW;
}
Timer.cs:
class Timer
{
public class NamedTimer : System.Timers.Timer
{
}
public static void TimerDo()
{
Timer timer = new Timer();
timer.Interval = (60000);
timer.Elapsed += Main_Tick;
timer.AutoReset = false;
timer.Start();
}
public static void Main_Tick(object sender, EventArgs args)
{
//there a want to call SetDatagridView()
}
}
timerDo() 将在 master 中调用 Class.
感谢您对我们的帮助
我建议你使用事件模式。
示例代码:
/// TimerManager class
public class TimerManager
{
public void TimerDo()
{
Timer timer = new Timer();
timer.Interval = (60000);
timer.Elapsed += Main_Tick;
timer.AutoReset = false;
timer.Start();
}
public void Main_Tick(object sender, EventArgs args)
{
if (OnTimerManagerTick != null)
OnTimerManagerTick(sender, args);
}
public delegate void TimerTick(object sender, EventArgs args);
public event TimerTick OnTimerManagerTick;
}
///Form1 Class
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
InitDataGridView();
TimerManager timerManager = new TimerManager();
timerManager.OnTimerManagerTick += TimerManager_OnTimerManagerTick;
}
private void TimerManager_OnTimerManagerTick(object sender, EventArgs args)
{
InitDataGridView();
}
private void InitDataGridView()
{
List<PersonTest> personTests = new List<PersonTest>
{
new PersonTest{Name = "Luiz", LastName = "Oliveira", Age = 35},
new PersonTest{Name = "Another", LastName = "Person", Age = 25},
new PersonTest{Name = "Neymar", LastName = "Junior", Age = 28},
};
dgvTestDbClick.DataSource = personTests;
}
}
public class PersonTest
{
public string Name { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}