On Monday, 17 February 2014 at 11:08:16 UTC, Chris wrote:
The D way of implementing a timer? I need to (automatically) execute a function that performs a clean up, say every hour.

if (file.older than 1 hour) {
    remove;
}

Here is a quick timer implementation that you can improve yourself:

import std.stdio;
import core.thread;

class ChrisTimer : Thread {
    private void delegate() funcToRun;
    private long timeToWait;
    private bool done = false;
    private int noSheep;
    private Duration howLong;

// We could make any function a parameter to ChrisTimer if we had a
    // constructor like:
    // this(void delegate() dg, long ms) {

    this(long ms) {
        funcToRun = &doSomething;
        timeToWait = ms;
        howLong = dur!("msecs")(timeToWait);
        funcToRun = &doSomething;
        super(&run);
    }

    private void run() {
        while (isRunning && !done) {
            funcToRun();
            sleep(howLong);
        }
    }

// Example function that is just going to count sheep (up to 10).
    public void doSomething() {
        ++noSheep;
        writeln("Counted ", noSheep, " sheep.");
        if (noSheep >= 10) {
            done = true;
        }
    }

} // ChrisThread class

int main(string[] args) {
    auto ct = new ChrisTimer(2000);
    ct.start();

    return 0;
}

Reply via email to