小编Sla*_*wag的帖子

垃圾收集和使用 - 为什么在使用{}`块后没有释放内存?

我最近一直在重构一些旧的数据库访问代码.我有一个包含数百种方法的库,看起来像这样

public int getFoo(int id)
{
    using(SqlConnection connection = ConnectionManager.GetConnection())
    {
        string sql = "SELECT TOP(1) foo FROM bar WHERE id=@id";

        SqlCommand command = new SqlCommand(sql, connection);
        command.Parameters.AddWithValue("@id", id);
        return (int)command.ExecuteScalar();
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为将SqlCommands 包装成一个using{}块(就像SqlConnection已经存在的那样)是一个明智的事情,这样资源就会尽快被处理掉.出于好奇心,我决定制作以下小型控制台应用程序,以查看将释放多少内存:

using (SqlConnection conn = ConnectionManager.GetConnection())
{
    WeakReference reference;
    string sql = "SELECT COUNT(foo) FROM bar";
    Console.WriteLine("Memory Allocated before SqlCommand: " + GC.GetTotalMemory(true));
    using (SqlCommand comm = new SqlCommand(sql,conn))
    {
        Console.WriteLine("Memory Allocated after SqlCommand: " + GC.GetTotalMemory(true));
        reference = new …
Run Code Online (Sandbox Code Playgroud)

.net c# garbage-collection using

3
推荐指数
1
解决办法
758
查看次数

更新控制器中的模型

所以我刚刚开始制作一个新的 mvc 项目。我(自己)制作了一个日历,显示一个月中的天数。它有两个按钮,可以让您获取一年中的月份Back和月份。Forth所以我的问题是我已经为它做了 null Javascript。逻辑在模型中。

现在每次某人。例如,点击Forth按钮,视图会创建一个 HttpPost,它将带有逻辑的模型发送到控制器。

控制器应该更新该值并发送带有更新模型的“新视图”。

这是一个小演示,可以更轻松地解释我的问题。在这种情况下,我想每次将(模型)变量“Number”增加 1。按下按钮。但我不想使用Javascript。那可能吗。

当前状态:如果我按下按钮,Add变量“Number”就会增加 1,仅增加一次。 之后它就什么也不做。不知何故,模型没有更新回视图。我究竟做错了什么?

模型

public class TestModel
{
    public int Number = -10;
}
Run Code Online (Sandbox Code Playgroud)

看法

@model MyProject.Models.TestModel
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
        <h4>TestModel</h4>
        <hr />
    </div>
        @using (Html.BeginForm())
        {
            @Html.DisplayFor(model => model.Number)
            <p>
                <input id="BtnAdd" name="myButton" type="submit" value="Add" />
            </p>
        }
</body>
</html>     
Run Code Online (Sandbox Code Playgroud)

控制器

public class TestController : Controller …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×2

.net ×1

asp.net-mvc ×1

garbage-collection ×1

using ×1