如何解决c#winforms怎么看文字的写法
我正在使用下面的代码,它应该一个字母一个字母地写我发送的字符串,但是当它开始写时,它确实阻止了应用程序,然后向我展示了它写的我可以做什么
simulator.Keyboard.TextEntry("pruebva").Sleep(typingDelay);
应用程序崩溃,然后您会看到已写入的文本,就像我在写入每个字符时看到的一样
private async void Start_Click(object sender,EventArgs e)
{
var simulator = new InputSimulator();
int typingDelay = 100;
Cursor.Position = pictureBox1.PointToScreen(new Point(171,80));
simulator.Mouse.LeftButtonClick();
Thread.Sleep(5000);
simulator.Keyboard.TextEntry("id-cellphone");
simulator.Keyboard.KeyPress(VirtualKeyCode.RETURN);
//enviar
Cursor.Position = pictureBox1.PointToScreen(new Point(585,577));
simulator.Mouse.LeftButtonClick();
simulator.Keyboard.TextEntry(dataGridView1.Rows[0].Cells[2].Value.ToString());
simulator.Keyboard.TextEntry("probe_text").Sleep(typingDelay);
simulator.Keyboard.KeyPress(VirtualKeyCode.SPACE);
simulator.Keyboard.TextEntry(dataGridView1.Rows[0].Cells[7].Value.ToString());
simulator.Keyboard.KeyPress(VirtualKeyCode.SPACE);
simulator.Keyboard.TextEntry(dataGridView1.Rows[0].Cells[5].Value.ToString());
simulator.Keyboard.KeyPress(VirtualKeyCode.SPACE);
simulator.Keyboard.KeyPress(VirtualKeyCode.RETURN);
dataGridView1.Rows.RemoveAt(dataGridView1.CurrentRow.Index);
感谢它起作用了
simulator.Keyboard.TextEntry(dataGridView1.Rows[0].Cells[2].Value.ToString());
await Task.Delay(1000);
simulator.Keyboard.TextEntry("pruebva").Sleep(typingDelay);
await Task.Delay(1000);
simulator.Keyboard.KeyPress(VirtualKeyCode.SPACE);
await Task.Delay(1000);
我终于看到你写的文字了,非常感谢
解决方法
应用程序不会崩溃。当程序停止处理操作系统消息 5 秒钟时,Windows 将报告程序没有响应。猜猜当你执行 Thread.Sleep(5000)
时会发生什么。是的,五秒钟的“什么都不做”就在那里。它阻止了 UI 线程处理消息。
请像这样使用 Task.Delay
:await Task.Delay(5000);
。是的,事件处理程序可以是异步的。
另见:
- About Messages and Message Queues 了解操作系统消息。
- Preventing Hangs in Windows Applications 有关 Windows 如何确定应用程序没有响应的说明。
-
Async/Await - Best Practices in Asynchronous Programming 和使用
async/await
的指南。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。