X次数后清除文件内容

时间:2016-09-29 15:31:12

标签: c# twitch

我需要在一段时间后清除文本文件的方法。这就是我到目前为止所拥有的

private Thread fileCleaner;
public void FileCleaner()
{
    fileCleaner = new Thread(new ThreadStart(this.Run))
}

因此,在请求武器将武器写入该列表后,这是将先前的武器列表读入文件。一旦我这样做,我有一个文件,如果我保存每一个请求,将很快得到满,这就是为什么我需要每隔X个时间清理它。

可以这样做吗?

Thread.Sleep();

然后只有一个运行函数,如果它是真的它只会写入文件然后使用

import datetime as dt

import tensorflow as tf
import tensorflow.contrib.slim as slim
from tensorflow.contrib.slim.nets import resnet_v1

from MyDataset import MyDataset
from TrainParams import TrainParams

dataset = MyDataset()
train_param = TrainParams()

#tf.device('/gpu:0')

num_classes = 15

inputs = tf.placeholder(tf.float32, shape=[1, None, None, 3])

with slim.arg_scope(resnet_v1.resnet_arg_scope(False)):
    mean = tf.constant([123.68, 116.779, 103.939],
                       dtype=tf.float32, shape=[1, 1, 1, 3], name='img_mean')
    im_centered = inputs - mean
    net, end_points = resnet_v1.resnet_v1_101(im_centered,
                                              global_pool=False, output_stride=16)

    pred_upconv = slim.conv2d_transpose(net, num_classes,
                                        kernel_size = [3, 3],
                                        stride = 2,
                                        padding='SAME')

    targets = tf.placeholder(tf.float32, shape=[1, None, None, num_classes])

    loss = slim.losses.sigmoid_cross_entropy(pred_upconv, targets)


log_dir = 'logs/'

variables_to_restore = slim.get_variables_to_restore(include=["resnet_v1"])
restorer = tf.train.Saver(variables_to_restore)

with tf.Session() as sess:

  sess.run(tf.initialize_all_variables())
  sess.run(tf.initialize_local_variables())

  restorer.restore(sess, '/path/to/ResNet-101.ckpt')

  optimizer = tf.train.GradientDescentOptimizer(learning_rate=.001)
  train_step = optimizer.minimize(loss)
  t1 = dt.datetime.now()
  for it in range(10000):
      n1=dt.datetime.now()
      batch = dataset.next_batch() # my function that prepares training batch
      sess.run(train_step, feed_dict={inputs: batch['inputs'],
                                      targets: batch['targets']})
      n2=dt.datetime.now()
      time = (n2-n1).microseconds/(1000)
      print("iteration ", it, "time", time)

我听说使用Threads时间不是一个好主意,但我不是这方面的专家。

2 个答案:

答案 0 :(得分:4)

使用Timer,并将其Elapsed事件的回调设置为文件清理方法。

var timer = new Timer(10000);
timer.Elapsed += (s, e) => File.Delete("C:\\your_file.txt");
timer.Enabled = true;

如果您需要停止计时器,请将timer.Enabled设置为false

答案 1 :(得分:2)

非常相似的问答:

Delete files from the folder older than 4 days

相关答案:

  

我建议使用System.Threading.Timer来做这样的事情。这是一个示例实现:

System.Threading.Timer DeleteFileTimer = null;

private void CreateStartTimer()
{
 TimeSpan InitialInterval = new TimeSpan(0,0,5);
 TimeSpan RegularInterval = new TimeSpan(5,0,0);

 DeleteFileTimer = new System.Threading.Timer(QueryDeleteFiles, null, 
        InitialInterval, RegularInterval);

}

private void QueryDeleteFiles(object state)
{
  //Delete Files Here... (Fires Every Five Hours).
  //Warning: Don't update any UI elements from here without Invoke()ing
  System.Diagnostics.Debug.WriteLine("Deleting Files...");
}

private void StopDestroyTimer()
{
  DeleteFileTimer.Change(System.Threading.Timeout.Infinite,
  System.Threading.Timeout.Infinite);

  DeleteFileTimer.Dispose();
}
     

这样,您可以轻松地在Windows服务中运行文件删除代码。