V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
miao666
V2EX  ›  问与答

c#的 winform 应该如何持续地向一个目标发送 webRequest 请求

  •  
  •   miao666 · 2019-08-03 20:41:43 +08:00 · 1642 次点击
    这是一个创建于 1963 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为我不太懂 C#,只是临时做一个小工具要用一下。大佬勿喷

    我使用一个定时器,然后在定时器里发送 post 请求,请求了 8 次,被 GC 回收了。。。
    然后期望的业务功能没实现。
    应该怎样禁止 GC 回收定时器,然后又不会导致程序崩溃?

    Timer threadTimer = new System.Threading.Timer ( new System.Threading.TimerCallback ( ThreadMethod ),null, -1, -1 );
    
    6 条回复    2019-08-04 02:08:33 +08:00
    secondwtq
        1
    secondwtq  
       2019-08-03 22:08:12 +08:00
    你把这个实例放到窗体类里面呢

    还是说现在已经在里面了 ... 毕竟楼里面好像没有说这是函数里面的
    Magentaize
        2
    Magentaize  
       2019-08-03 22:39:52 +08:00 via iPhone
    Observable.Timer
    yejinmo
        3
    yejinmo  
       2019-08-03 22:54:16 +08:00
    别用 Timer 了 直接在 Program.cs 的 Main 用 Task.Run


    var exitFlag = false; // 退出标志
    Task.Run(()=>
    {
    while (!exitFlag)
    {
    try
    {
    // 你的代码
    }
    catch {}
    Thread.Sleep(1000 * 1); // 休眠 1 秒
    }
    });


    你说的被回收 WebRequest 定义在了 ThreadMethod 里?
    miao666
        4
    miao666  
    OP
       2019-08-04 02:07:58 +08:00 via iPhone
    @yejinmo 是的啊,debug 的时候不会,发布以后就被回收了
    miao666
        5
    miao666  
    OP
       2019-08-04 02:08:11 +08:00 via iPhone
    @Magentaize 谢谢,我试试
    miao666
        6
    miao666  
    OP
       2019-08-04 02:08:33 +08:00 via iPhone
    @secondwtq 放在 form.cs 里
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3625 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:38 · PVG 18:38 · LAX 02:38 · JFK 05:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.