小编Sha*_*run的帖子

Dispose()用于清理托管资源?

这个答案中我发现,

在代码中使用Dispose/Finalize模式时,清除Finalize方法中的非托管资源和Dispose方法中的托管资源.

后来我发现这篇关于敲定和处理的好文章,并对它们有了清晰的认识.本文有以下代码(第3页),用于解释概念:

class Test : IDisposable
{
    private bool isDisposed = false;

    ~Test()
    {
       Dispose(false);
    }

    protected void Dispose(bool disposing)
    {
       if (disposing)
       {
          // Code to dispose the managed resources of the class
       }
       // Code to dispose the un-managed resources of the class

       isDisposed = true;
    }

    public void Dispose()
    {
       Dispose(true);
       GC.SuppressFinalize(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

但在此之下,出现了相同的注释(我在本问题开头所包含的注释).

Dispose/Finalize模式Microsoft建议您在使用非托管资源时实现Dispose和Finalize.然后,正确的顺序是开发人员调用Dispose.即使开发人员忽略了显式调用Dispose方法,也会在对象被垃圾回收时运行Finalize实现并仍然释放资源.Francesco Balena在他的博客中写道:只有当你的类型调用分配非托管资源(包括非托管内存)的非托管代码并返回最终必须用来释放资源的句柄时,才应使用Dispose/Finalize模式.只需处理和完成必须通过在处理或完成自己的成员之后调用父母的相应方法来链接到他们的父对象". 简单地说,在代码中使用Dispose/Finalize模式时,清除Finalize方法中的非托管资源和Dispose方法中的托管资源.

现在我又困惑了.在整篇文章和代码示例中,显示应释放非托管资源Dispose().但那个评论的相关性是什么?

编辑:

正如确认这一行:

简单地说,当在代码中使用Dispose/Finalize模式时,清理Finalize方法中的非托管资源和Dispose方法中的托管资源.

是错误的,我编辑了这个答案.

c# dispose finalize

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

我可以使用Task.Delay作为计时器吗?

我想每秒执行一些代码.我现在使用的代码是:

Task.Run((作用)ExecuteSomething);

ExecuteSomething()定义如下:

 private void ExecuteSomething()
        {
            Task.Delay(1000).ContinueWith(
               t =>
               {
                   //Do something.

                   ExecuteSomething();
               });
        }
Run Code Online (Sandbox Code Playgroud)

这个方法会阻塞一个线程吗?或者我应该Timer在C#中使用class?似乎Timer还专门用于执行(?)

c# multithreading asynchronous timer task

13
推荐指数
2
解决办法
6268
查看次数

使用System.Web.Optimization时,如何将type ="text/javascript"添加到脚本标记中

我有以下内容

bundles.Add(new ScriptBundle("~/bundles/scripts/common").Include(
                  "~/Scripts/jquery.validationEngine.js",
                  "~/Scripts/common.js"));
Run Code Online (Sandbox Code Playgroud)

哪个生成

<script src="/bundles/scripts/common?v=9O0Yi3fV_GWpGyJQ_QYURiOYy6SEmxUQtkUVN4GXo2U1"></script>
Run Code Online (Sandbox Code Playgroud)

使用时渲染

    <asp:PlaceHolder ID="PlaceHolderJs" runat="server">                
            <%: Scripts.Render("~/bundles/scripts/common") %>
    </asp:PlaceHolder>
Run Code Online (Sandbox Code Playgroud)

哪个不是有效的HTML,因为它缺少类型="text/javascript".如何使BundleCollection在脚本标记中输出此元素?

asp.net xhtml bundling-and-minification system.web.optimization

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

SQL Server是否默认创建非聚集索引

雅,它是一个重复这个.但我只需要Pinal Dave这篇文章进行澄清,其中说明如下:

方案4:主键默认为聚簇索引,其他索引默认为非聚簇索引

在这种情况下,我们将在两个表上创建两个索引,但是我们不会在列上指定索引的类型.当我们检查结果时,我们会注意到主键自动默认为聚簇索引而另一列默认为非聚集索引.

-- Case 4 Primary Key and Defaults
USE TempDB
GO
-- Create table
CREATE TABLE TestTable
(ID INT NOT NULL PRIMARY KEY,
Col1 INT NOT NULL UNIQUE)
GO
-- Check Indexes
SELECT OBJECT_NAME(OBJECT_ID) TableObject,
[name] IndexName,
[Type_Desc]
FROM sys.indexes
WHERE OBJECT_NAME(OBJECT_ID) = 'TestTable'
GO
-- Clean up
DROP TABLE TestTable
GO
Run Code Online (Sandbox Code Playgroud)

sql sql-server indexing clustered-index

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

一旦调试开始,Visual Studio就会从应用程序中分离出来

我有一个Web应用程序,我一直能够在Visual Studio中运行它调试很好(断点工作,我可以暂停执行等).最近,行为突然改变了,发生了一些事情:

  • 我开始调试,它推出IE并加载应用程序,但几秒钟后(有时页面还没有显示),Visual Studio就好像调试已停止 - 我能够再次在VS中编辑代码,并且工具栏上的"播放"按钮已启用.应用程序继续在刚刚生成的IE窗口中运行,但我并不依赖它
  • 在这几秒钟内VS正在"调试",因为它分离了,我的断点显示为空洞 - 好像我已经设置为"释放"模式并且它们不会被击中.实际上,我在Page_Load中设置了一个断点,它会跳过它.我已经检查了,我已经设置为调试模式,虽然工具栏中缺少编译模式下拉列表(我检查了构建属性以确保我处于调试模式).

有人可以在这里说清楚吗?

debugging uac windows-vista visual-studio windows-8.1

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

如何在Netbeans中使只读文件可写

我正在使用Netbeans 6.9.1.

每当我打开readonly文件并想要编辑它时,我必须手动转到文件目录并readonly从属性中删除该标志.

是否有任何插件或某种方式我们可以直接在netbeans编辑器中使其可写?

netbeans netbeans-plugins netbeans-6.9

5
推荐指数
0
解决办法
2693
查看次数

更改ajax请求的response.statuscode会引发错误"服务器无法在发送HTTP标头后设置状态"

我正在一个MVC项目中工作,其中每个操作方法的用户角色和权限都存储在数据库中.我想要实现的是通过重写AuthorizeAttribute在mvc中使用授权过滤器功能.这样我就可以全局注册我的自定义授权过滤器.

这是我想要做的,遵循这个方法.我正在关注这篇文章来处理ajax请求.

protected override bool AuthorizeCore(HttpContextBase httpContext)
{
     //Custom permission checking logic 
     return false;//no permission for all methods-Just for testing
}

public override void OnAuthorization(AuthorizationContext filterContext)
{
    base.OnAuthorization(filterContext);
    CheckIfUserIsAuthenticated(filterContext);}
}

private void CheckIfUserIsAuthenticated(AuthorizationContext filterContext)
{
    // If Result is null, we’re OK: the user is authenticated and authorized. 
    if (filterContext.Result == null)
        return;

    var httpContext = filterContext.HttpContext;
    var request = httpContext.Request;
    var response = httpContext.Response;

    var user = httpContext.User;
    // If here, you’re getting …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc asp.net-ajax asp.net-mvc-5

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

text/xmldecl不在输入的开头

我试图在数据库中插入xml文件,但我收到此错误text/xmldecl不在输入的开头.

这是查询:

INSERT [EMR].[tblTemplateForm]
 (FormXML)
 VALUES ( CAST('<?xml version="1.0" encoding="UTF-8"?><EMR>
  <CustomTextBox xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Text>0.0</Text>
    <Type>TextBox</Type>
    <Width>300</Width>
    <id>txt1</id>
    <Label>POG(LMP)</Label>
    <LabelWidth>200</LabelWidth>
    <labelFontStyle>normal</labelFontStyle>
    <labelFontWeight>normal</labelFontWeight>
    <labelFontColor>Black</labelFontColor>
    <CaptionOrientation>Horizontal</CaptionOrientation>
    <NewControl>false</NewControl>
    <NumericText>0</NumericText>
    <TextMode>Singleline</TextMode>
    <rows>0</rows>
    <columns>0</columns>
  </CustomTextBox><?xml version="1.0"?>
  <CustomNumericTextBox xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Type>NumericTxtBox</Type>
    <Width>500</Width>
    <id>numTxt1</id>
    <Label>numTxt1</Label>
    <LabelWidth>200</LabelWidth>
    <labelFontStyle>normal</labelFontStyle>
    <labelFontWeight>normal</labelFontWeight>
    <labelFontColor>Black</labelFontColor>
    <CaptionOrientation>Horizontal</CaptionOrientation>
    <NewControl>false</NewControl>
    <NumericText>3</NumericText>
  </CustomNumericTextBox><?xml version="1.0"?>
  <AllControlsCount xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Width>0</Width>
    <id>ControlsID</id>
    <LabelWidth>0</LabelWidth>
    <NewControl>false</NewControl>
    <NumericText>0</NumericText>
    <lblCount>0</lblCount>
    <txtCount>12</txtCount>
    <numTxtCount>1</numTxtCount>
    <ddlCount>0</ddlCount>
    <rbCount>0</rbCount>
    <cbCount>0</cbCount>
  </AllControlsCount>
</EMR>' as XML))
 GO
Run Code Online (Sandbox Code Playgroud)

错误信息:

Msg 9438, Level 16, State 1, Line 1
XML parsing: line 19, character 24, …
Run Code Online (Sandbox Code Playgroud)

sql sql-server xml-parsing

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

ConcurrentDictionary 的列表顺序是否有保证?

我正在使用 ConcurrentDictionary 来存储日志行,当我需要向用户显示它们时,我会调用ToList()以生成一个列表。但奇怪的是,有些用户在列表中最先收到最近的行,而从逻辑上讲,他们应该在最后。

这是因为 ConcurrentDictionary 不能保证 IEnumerate 接口上的持久顺序,或者是什么原因?

.net concurrency list concurrentdictionary blockingcollection

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

在 Razor 视图中根据需要创建字段

我想在剃刀视图中根据需要创建一个文本框字段。我无法使用验证属性,[Required]因为字段名称是动态生成的。我检查了这个答案,它将data-val-required字段设置为true使用 javascript。有没有其他方法可以做到这一点,因为在运行项目之前我不会知道字段 id?

编辑:

我尝试了下面的代码,现在它可以工作了,只是表单提交时不显示验证消息。

@for (int i = 0; i < Model.Controls.Length; i++)
{
            @Html.TextBoxFor(x => x.Controls[i].Value, new { id = obj.VitalName,  data_val_required = "true" })
            @Html.ValidationMessageFor(x => x.Controls[i].Value, "Please fill in the details.")
        </td>
    </tr>
}
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc jquery-validate razor asp.net-mvc-3

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