WinForm 实现包括同时执行一个方法 5 次。 10

发布于 科技 2024-08-16
22个回答
  1. 匿名用户2024-02-01

    首先,我会告诉你,它肯定比 5 秒慢。 多线程不是程序优化,如果程序逻辑或内存分配本身有问题,则无法通过多线程来改变性能。

    可以理解为,在单线程的情况下,任务是排队逐个执行的,而在多线程的情况下,多个任务是轮流执行的,任务的每个部分执行完毕后,替换另一个部分,直到完成。 因此,性能并没有提高多少,甚至更慢(花在任务管理上)。 但需要注意的是,多线程不是先进先出,即使是同一个任务,也可能先完成,所以要注意限制线程的打开。

    Form 中多线程的优点是避免了由于后台逻辑运行时间长而导致的接口卡顿问题(接口绘制和后台逻辑使用一个线程,排队,因此假死)。 良好的用户体验。

    如果同时执行多次数据任务,则一次启动一个线程,最好使用线程池。 如果没有,只需使用 1 个线程,在前台显示提示框或进度条就足够了。

  2. 匿名用户2024-01-31

    多线程有其优点,今天的计算机是多核的,如果只有一个线程,那么其他内核要做什么? 如果编写器只考虑单线程,那么计算机将无法为您分配任务给其他内核,如果它是多线程的,则计算机将能够并发运行。 虽然多线程开销很大,可能比原来的慢,但如果任务很多,它仍然值得使用。

    在您的情况下,总共 5 秒后,切换到多线程可能并不明显。 建议采用两种改进方法。

    1.使用异步线程类似于特殊的多线程,只不过只有一个多线程。 这种方法不会提高执行效率,但会改善用户体验。

    也就是说,按下按钮后,接口不会死在那里,主线程负责用户响应,子线程做主逻辑,5s后结果会放到接口上。 用户不会下意识地感受到漫长的等待。

    2.改进逻辑以提高效率。 为什么是5次?

    提高效率的原则是将周期向后移动。 所谓前后,UI是前面,服务是中间,db是后面,因为循环需要额外的开销,所以如果把循环放到db上,是最快的。 如果你能做到,那么执行时间进入 3s 应该不是什么大问题。

    您最好能够根据选项 2 进行改进,如果没有,您可以将其与选项 1 结合使用

  3. 匿名用户2024-01-30

    它肯定要慢得多,但我认为您可以考虑使用预取数据来避免多次查询,或者使用批量提交。

    如果需要将数据视为上次更改的结果,则意味着每个更改都将因上次更改而更改。 然后使用数据集。

    批量提交和预读数据很好,我们过去一次有 1000 次提交。

  4. 匿名用户2024-01-29

    只有一种方法,5 线程调谐,甚至更慢。

    主线程调优需要5秒,现在分成5个线程,每个线程的CPU变小了,每个线程大于5秒。

  5. 匿名用户2024-01-28

    有很多方法,可以取硬盘或网卡号,然后生成一个加密字符串,可以存储在文件或数据库中,或者是软件的某个功能的命令,当然,这个指令只有你或者你通知的人知道,比如按F5或者其他激活这个指令来识别是不是你获得了加密的电脑。

  6. 匿名用户2024-01-27

    根据当前机器的MAC地址编写验证程序。

  7. 匿名用户2024-01-26

    int i= 0;

    form lode()

    private void timer1_tick(object sender, eventargs e)

    将时间间隔设置为 1000 一秒,大概就是这个东西吧!

  8. 匿名用户2024-01-25

    在指定的时间间隔后引发的事件。

    private void timer2_tick(object sender, eventargs e)

  9. 匿名用户2024-01-24

    1.在实现中,不要使用 Get All Current Processes,因为该进程可以重命名,使用 win api findwindow,然后使用 window 类名来查找进程。

    2.因为。 .NET 本身无法实现全局系统钩子,如果要使用全局系统钩子,需要使用 C++ 实现,然后使用 C 调用,建议使用 WindowsSerivce+WinAPI(findWindow) 来实现。

  10. 匿名用户2024-01-23

    获取所有当前进程。 根据进程名称确定是否启用它。

  11. 匿名用户2024-01-22

    要么做服务。

    要么做一个全局钩子

    详细**,估计不会出现。

  12. 匿名用户2024-01-21

    如果将异常处理添加到 a1() 中,则异常处理仅返回到 a1() 的上层,即 a()。

    由于 a1() 已经处理了异常,因此 a() 层没有异常,因此程序继续,因此 a2 和 a3 将继续执行。

    如果要中止 a2 和 a3,则必须将异常处理写入调用它们的函数中,即 a()。

  13. 匿名用户2024-01-20

    使用子线程,在主线程中实现。

  14. 匿名用户2024-01-19

    写一个服务,记录上次关机时间、用户名,然后下次启动电脑时,读取用户名、上次关机时间,如果在10分钟内,锁定电脑,不在那里,正常使用。

  15. 匿名用户2024-01-18

    写入日志。 在执行每个操作之前记录状态,以及执行之后执行的操作。 然后,您可以依次撤销它们。 数据库具有此类日志。 这似乎很复杂。 如果只是撤消文本。 想想吧。

    首先,插入文本,并记录插入的每个字符和位置,并且可以撤消。

    删除文本,记录位置和字符,即可恢复。

    替换,可以认为是先删除后插入。

    试一试。 我也没有做过。

  16. 匿名用户2024-01-17

    如果要使此项目或其他项目的所有 winform 表单都具有相同的颜色,可以自定义一个表单,对其进行布局,然后其他表单继承该表单。 至于需要改变颜色,只需改变表格的颜色即可。

  17. 匿名用户2024-01-16

    尝试在表单的表单关闭或表单关闭事件中写 **。

  18. 匿名用户2024-01-15

    xmandlp |第 4 级。

    尝试在表单的表单关闭或表单关闭事件中写 **。

    说得对。

  19. 匿名用户2024-01-14

    有一些事件,例如关闭关闭,您还可以编写一个所有页面都继承它的表单类。

  20. 匿名用户2024-01-13

    Form 有一个称为 formcloseting 的属性

    把它放在里面。

    该属性表示窗口何时关闭。

  21. 匿名用户2024-01-12

    无论如何,有一个事件叫做 formclosed in form。 还有一个表单关闭。。你可以试试...

  22. 匿名用户2024-01-11

    让我们来谈谈吧!

    您可以捕捉窗口关闭事件。

相关回答
6个回答2024-08-16

在左边放一个groupbox,即gpbox菜单,将Dock设置在左边; 放置导航控件。 >>>More

21个回答2024-08-16

"inset into table_userhis1(username,datetimer)values('@username','@time')"); >>>More

19个回答2024-08-16

最简单的是,使用路由器,ADSL调制解调器连接到路由器的WAN端口。 根据说明书配置本地IP,然后通过IE浏览器登录路由器... 用户名和密码。 >>>More

11个回答2024-08-16

只需购买路由器或集线器即可。

7个回答2024-08-16

为什么是三个功能? 一个就够了。