我创建了以下代码
var filename = "wwwroot/Counter/Counter.txt";
var counterStream = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.None);
var reader = new StreamReader(counterStream);
var visits = Convert.ToInt32(reader.ReadLine());
visits = visits + 1;
var writer = new StreamWriter(counterStream);
writer.Write(visits);
counterStream.Dispose();
正如您将意识到的那样,它是我正在建立的网站的点击计数器。我很好,直到排队。
visits = visits + 1
Counter.txt是一个只包含一个数字的文件,上面的代码已经成功读取并更新了它。但是,最后三行不会将任何内容写回文件。我有一半期待它在文件中写一个新行,虽然显然我希望它取代原来的。我不知道为什么它没有写任何东西。请有人指出我正确的方向。
答案 0 :(得分:0)
提示,您可以使用
using func = std::function<void()>;
func f;
f = [&f]{ int a = 0; f.~func(); std::cout << a; };
非常方便,因为它会自动处理和清理。
这是一个有效的例子,虽然它写了二进制文件
using(FileStream counterStream=new FileStream())
{
}
但是,就像Yeldar所说,由于碰撞,这对于网络服务器来说效果不佳。 另外我认为你的FileShare.None会阻止其他用户打开文件,从而错过点击。
您可以将其放入数据库中,这样可以更轻松。
答案 1 :(得分:0)
我用以下代码解决了我的问题
<a class='test-tooltip' data-placement='top' title="Title" href='#'>Click</a>
<div id="youtube_container" style="display: none">
<iframe width="853" height="480" src="//www.youtube.com/embed/Q8TXgCzxEnw?rel=0" frameborder="0" allowfullscreen></iframe>
</div>