после сборки появляется ошибка System.InvalidOperationException: "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'Form2' не из того потока, в котором он был создан." как это решить?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Timers;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form2 : Form
{
private static System.Timers.Timer aTimer;
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
// Create a timer with a ten second interval.
aTimer = new System.Timers.Timer(10000);
// Hook up the Elapsed event for the timer.
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
// Set the Interval to 2 seconds (2000 milliseconds).
aTimer.Interval = 2000;
aTimer.Enabled = true;
}
public void OnTimedEvent(object source, ElapsedEventArgs e)
{
Invoke.Close();
}
}
}
В общем решил таким образом, большое спасибо за советы:
namespace WindowsFormsApp1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
counter = 0;
timer1.Interval = 600;
timer1.Enabled = true;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
}
private int counter;
private void timer1_Tick(object sender, System.EventArgs e)
{
if (counter >= 7)
{
timer1.Enabled = false;
counter = 0;
this.Close();
}
else
{
counter = counter + 1;
}
}
}
}
System.Windows.Forms.Timer, он всегда выполняется в нужном потоке. – aepot Aug 06 '21 at 05:38