我有一个用C#编写的Qr生成器应用程序。所以现在我想生成Qr码,在运行期间每10秒改变一次
我想生成动态Qr码,因此请帮助我如何构建一个动态Qr码生成器,该生成器将在运行期间每10秒更改一次我有一个用C#编写的Qr生成器应用程序。所以现在我想生成Qr码,在运行期间每10秒改变一次,c#,visual-studio,winforms,qr-code,C#,Visual Studio,Winforms,Qr Code,我想生成动态Qr码,因此请帮助我如何构建一个动态Qr码生成器,该生成器将在运行期间每10秒更改一次 private void btnGenerate_Click(object sender, EventArgs e) { QRCoder.QRCodeGenerator QRGenerator = new QRCoder.QRCodeGenerator(); DateTime now = DateTime.Now; dateTimeP
private void btnGenerate_Click(object sender, EventArgs e)
{
QRCoder.QRCodeGenerator QRGenerator = new QRCoder.QRCodeGenerator();
DateTime now = DateTime.Now;
dateTimePickerDate.Text = now.ToLongDateString();
txtTime.Text = now.ToShortTimeString();
var qrText = cmbSubject.Text + "\n" + txtSection.Text + "\n" + dateTimePickerDate.Text + "\n" + txtTime.Text + "\n";
var MyData = QRGenerator.CreateQrCode(cmbSubject.Text + ",\n" + txtSection.Text + ", \n" + dateTimePickerDate.Text + ",\n" + txtTime.Text + ",\n" + txtIP.Text + ",\n", QRCoder.QRCodeGenerator.ECCLevel.H);
var code = new QRCoder.QRCode(MyData);
pcQRImage.Image = code.GetGraphic(50);
}
您需要在表单项目中添加一个
计时器
,例如:
private Timer timerInterval=new Timer();
private QRCoder.QRCodeGenerator QRGenerator=新的QRCoder.QRCodeGenerator();
私有void btn生成\单击(对象发送者,事件参数e)
{
timerInterval.Enabled=true;
timerInterval.Tick+=timerInterval_Tick;
时间间隔=10000;
timerInterval.Start();
}
私有void timerInterval_Tick(对象发送方,事件参数e)
{
DateTime now=DateTime.now;
dateTimePickerDate.Text=now.ToLongDateString();
txtTime.Text=now.ToShortTimeString();
var qrText=cmbSubject.Text+“\n”+txtSection.Text+“\n”+dateTimePickerDate.Text+“\n”+txtTime.Text+“\n”;
var MyData=QRGenerator.CreateQrCode(cmbSubject.Text+”,\n“+txtSection.Text+”,\n“+dateTimePickerDate.Text+”,\n“+txtTime.Text+”,\n“+txtIP.Text+”,\n”,QRCoder.QRCodeGenerator.ECCLevel.H);
var代码=新的QRCoder.QRCode(MyData);
pcQRImage.Image=code.GetGraphic(50);
}
也可以使用
System.Threading.Timer
,但随后有必要调用表单
元素。您好,您可以尝试此方法,这将实例化计时器,以在设置的每毫秒间隔触发一次
private void Form1_Load(object sender, EventArgs e)
{
System.Timers.Timer timerInterval = new System.Timers.Timer();
timerInterval.Elapsed += new ElapsedEventHandler(OnTimedEvent);
timerInterval.Interval = 10000;
timerInterval.Enabled = true;
}
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
QRCoder.QRCodeGenerator QRGenerator = new QRCoder.QRCodeGenerator();
DateTime now = DateTime.Now;
dateTimePickerDate.Text = now.ToLongDateString();
txtTime.Text = now.ToShortTimeString();
var qrText = cmbSubject.Text + "\n" + txtSection.Text + "\n" + dateTimePickerDate.Text + "\n" + txtTime.Text + "\n";
var MyData = QRGenerator.CreateQrCode(cmbSubject.Text + ",\n" + txtSection.Text + ", \n" + dateTimePickerDate.Text + ",\n" + txtTime.Text + ",\n" + txtIP.Text + ",\n", QRCoder.QRCodeGenerator.ECCLevel.H);
var code = new QRCoder.QRCode(MyData);
if(pcQRImage!=null)
{
pcQRImage.Dispose();
pcQRImage.Image = code.GetGraphic(50);
}
else
{
pcQRImage.Image = code.GetGraphic(50);
}
}
这里没有问题,只是一份意向声明。也许你应该研究一下计时器?重复,这能回答你的问题吗?是的,这是一个等待发生的GDI内存不足异常。创建这样的多个映像而不处理它们最终将以失败告终。也许您应该在重新分配之前处理最后一个映像?