小编Jam*_*son的帖子

当传递到另一个对象时,谁应该在IDisposable对象上调用Dispose?

是否有任何指导或最佳实践,Dispose()当他们被传递到另一个对象的方法或构造器时,谁应该调用一次性对象?

以下是我的意思的几个例子.

IDisposable对象被传递给一个方法(它应该在它完成后处理它吗?):

public void DoStuff(IDisposable disposableObj)
{
    // Do something with disposableObj
    CalculateSomething(disposableObj)

    disposableObj.Dispose();
}
Run Code Online (Sandbox Code Playgroud)

IDisposable对象被传递给一个方法并保留一个引用(它应该在处理时处置它MyClass吗?):

public class MyClass : IDisposable
{
    private IDisposable _disposableObj = null;

    public void DoStuff(IDisposable disposableObj)
    {
        _disposableObj = disposableObj;
    }

    public void Dispose()
    {
        _disposableObj.Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

我目前认为在第一个例子中,呼叫者DoStuff(),因为它可能创建的对象应该处理的对象.但是在第二个例子中,感觉MyClass应该处理对象,因为它保留了对象的引用.这个问题是调用类可能不知道MyClass已保留引用,因此可能决定在MyClass完成使用之前处置该对象.这种情况是否有任何标准规则?如果存在,当一次性对象传递给构造函数时它们是否不同?

.net c# idisposable

57
推荐指数
4
解决办法
9692
查看次数

GitHub - 查找与提交相关的拉取请求

我正在尝试找到过去的拉取请求,以查看在特定问题上做出了哪些评论/操作.

我知道文件和更改,所以我可以通过查看责备视图来进行引入它的提交.但是我找不到一种方法来查看第一次将该提交推送到分支的pull请求.

有没有办法做到这一点?或者我是否必须沿着记忆通道行进并手动浏览过去的拉动请求?

git github

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

为什么在Visual Studio中具有正向后视的正则表达式会导致每隔第二个匹配被替换?

给定以下正则表达式正则表达式(从我实际上想使用的正则表达式简化):

(?<=\s|\n)(".*?")
Run Code Online (Sandbox Code Playgroud)

和以下替换表达式:

_T($1)
Run Code Online (Sandbox Code Playgroud)

Visual Studio 2013将找到每个匹配的字符串,但是在替换时,将替换与后续匹配相对应的字符串,因此将替换第二个字符串。

此外,Replace All它不起作用,并说它找不到任何匹配的文本(即使a Find All会找到相关的字符串)。

这是Visual Studio中的错误,还是我做错了什么?


演示

在此处输入图片说明

regex replace visual-studio

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

当其中一个实现需要额外的步骤时,C#模式用于避免泄漏抽象

我正在实现一个ITracker看起来像这样的接口:

public interface ITracker
{
    void Track(ITrackerEvent trackerEvent);
}
Run Code Online (Sandbox Code Playgroud)

我最初创建了这个包装Mixpanel.NET的接口的实现.然后我创建了另一个包装Application Insights的程序.但是,Application Insights需要Flush()将数据发送到服务器.

我不想仅仅因为其中一个实现需要一个方法而污染ITracker接口Flush().它会感觉像是一个漏洞的抽象.

但是,我需要在某个时候调用此方法(可能在应用程序关闭时)并且不希望每次Track调用时都这样做.

当Tracker在会话结束时被垃圾收集时,是否可以调用方法?这甚至是一个好方法吗?

我觉得我在这里错过了一招!

.net c# design-patterns leaky-abstraction

5
推荐指数
2
解决办法
405
查看次数

在Windows 10上安装.NET语言包时出错

我们有一个引导程序,可以检查并安装.NET和法语.NET语言包.

我们只是更新它以安装.NET 4.6.1.但是,在Windows 10上安装法语语言包时,我们收到一条错误消息(法语),说明语言包已经安装:

Le module linguistique de .NET Framework 4.6.1(Français)ne对应的la languedusystèmed'开发Windowsinstallésurvotre ordinateur.Modifiezvosparamètreslinguistiquesou installez le module linguistique适用于ausystèmed'prinuxinstalléavantd'installer ce package.

Le module linguistique de .NET Framework 4.6.1(Français)estdéjàinstallésurvotre ordinateur.Pour l'activer,installez le module linguistique Corresponantausystèmed'peglationinstallé.

谷歌翻译将其翻译为:

.NET Framework 4.6.1(法语)的语言包与计算机上安装的Windows操作系统语言不对应.在安装此软件包之前,请更改语言设置或安装适用于所安装操作系统的语言包.

您的计算机上已安装.NET Framework 4.6.1(法语)的语言包.要激活,请安装与安装的操作系统对应的语言包.

我们已经尝试过.NET 4.5.1法语语言包,它会出现类似的错误.它在Windows 7上安装得很好.

Windows 10中的更改意味着我们收到此错误消息?这似乎意味着法语语言包已作为Windows 10的一部分安装.如果是这样,那么拥有Windows 10语言包安装程序有什么意义呢?

任何帮助,将不胜感激.

.net windows windows-10

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

WiX刻录升级显示最后的卸载UI

我正在尝试为WiX和Burn创建自定义UI.除了一件事,我差不多完成了.在升级的安装结束时(对于exaple 1.0.0到1.1.0),先前版本的卸载开始,并显示其UI.我的问题是如何处理这个问题,以便用户最终看不到卸载UI.

wix upgrade bootstrapper burn

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