How to call function on timer ASP.NET MVC

前端 未结 4 857
醉话见心
醉话见心 2020-12-12 14:15

I need to call function on timer (lets say onTickTack() function) and reload some info in ASP.NET MVC project. I know that there are several ways to do that, but which one i

4条回答
  •  我在风中等你
    2020-12-12 14:27

    The answer to this question would very much depend on what do you mean by reload some info in ASP.NET MVC project. This is not a clearly stated problem and as such, more than obviously, it cannot have a clearly stated answer.

    So if we assume that by this you want to periodically poll some controller action and update information on a view you could use the setInterval javascript function to periodically poll the server by sending an AJAX request and update the UI:

    window.setInterval(function() {
        // Send an AJAX request every 5s to poll for changes and update the UI
        // example with jquery:
        $.get('/foo', function(result) {
            // TODO: use the results returned from your controller action
            // to update the UI
        });
    }, 5000);
    

    If on the other hand you mean executing some task on the server at regular periods you could use the RegisterWaitForSingleObject method like this:

    var waitHandle = new AutoResetEvent(false);
    ThreadPool.RegisterWaitForSingleObject(
        waitHandle, 
        // Method to execute
        (state, timeout) => 
        {
            // TODO: implement the functionality you want to be executed
            // on every 5 seconds here
            // Important Remark: This method runs on a worker thread drawn 
            // from the thread pool which is also used to service requests
            // so make sure that this method returns as fast as possible or
            // you will be jeopardizing worker threads which could be catastrophic 
            // in a web application. Make sure you don't sleep here and if you were
            // to perform some I/O intensive operation make sure you use asynchronous
            // API and IO completion ports for increased scalability
        }, 
        // optional state object to pass to the method
        null, 
        // Execute the method after 5 seconds
        TimeSpan.FromSeconds(5), 
        // Set this to false to execute it repeatedly every 5 seconds
        false
    );
    

    If you mean something else, don't hesitate to provide more details to your question.

提交回复
热议问题