小编Bra*_*ore的帖子

在将其设置为空之前,是否需要关闭Adodb.recordset对象?

Dim rs as ADODB.Recordset
set rs = ReturnARecordset 'assume ReturnARecordset does just that...

'do something with rs

rs.Close
set rs = Nothing
Run Code Online (Sandbox Code Playgroud)

是否有必要在将其设置为空之前调用rs.Close?

编辑:我们有一个全局连接,我们在应用程序的持续时间内保持打开状态,所有记录集对象都使用相同的连接.我在下面看到两个答案,谈到需要关闭记录集以确保连接不会悬空.对我而言,这听起来像很多愚蠢的谈话,因为连接是用连接对象控制的,而不是记录集对象吗?但如果我在这里遗漏了什么,请告诉我......

vb6 database-connection adodb

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

如何在C#中编写一个好的反复出现的模板模式(CRTP)

前段时间我想创建自己的数据映射器,它比平均ORM简单得多.这样做我发现需要访问我的基类中继承类的类型信息.我的第一个想法是反射,但它太慢了(如果你使用反射,请查看Fasterflect,因为它"几乎"消除了反射的性能问题).

所以我转向了一个解决方案,我后来发现它有自己的名字:奇怪的重复模板模式.这主要解决了我的问题,但学习如何正确实现这种模式有点挑战.我必须解决的两个主要问题是:

1)如何让我的消费代码与我的通用对象一起使用而无需知道创建对象的通用参数?

2)如何在C#中继承静态字段?

具有挑战性的部分实际上是在弄清问题.一旦我意识到我需要做什么,解决这些问题就很容易了.如果你发现自己需要CRTP,你可能会发现自己需要回答这些问题......它们似乎是相辅相成的.

c# crtp

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

如何减少VB6项目启动时间/精确定位需要这么长时间

我使用了两个vb6应用程序.其中一个启动非常快,而另一个需要很长时间.我想我会做一些分析,找出为什么这么长时间.

所以我在开始时按F8开始,我意识到启动时间的很大一部分实际上是在我点击F8的时间和它突出显示第一行代码的时间之间.

以下哪项最有可能造成这种情况?

  • 依赖数量
  • 在组项目中有太多项目,而不是将它们作为dll引用
  • 表格数量
  • 启动表单中的对象数
  • 所有表单上的对象数
  • 还有什么?

作为奖励,我会喜欢任何有关如何更具体地确定问题的想法,如果它可能在多个领域.

谢谢!

编辑:似乎我可能还没有完全明确"减速发生在哪里".所以要说清楚我创建了以下过程:

Sub Main()
End Sub
Run Code Online (Sandbox Code Playgroud)

就是这样,它在一个模块中除了这两行之外绝对没有任何内容.没有表单被加载,虽然还有其他模块"Dim o as New SomeObject",但我知道这些对象没有被实例化,因为我知道visual basic不会创建以这种方式声明的对象,直到你实际使用它们为止第一次.

我相信我现在已经在技术上尽可能地优化了启动代码.但它仍然需要相同的启动时间.

编辑2:我刚刚意识到编译的应用程序实际上启动速度相当快.它只是在需要很长时间的ide中启动它.然而,我对我的速度比对客户的关心更多,因为他们只是启动一次并让它一整天都在运行,而我每天都会开始几十次.

vb6 performance

9
推荐指数
2
解决办法
2466
查看次数

清理无法处理以下路径

我的问题与这里的问题相同:

SVN中的工作副本XXX已锁定并且清除失败

但是,似乎对每个人都有用的解决方案对我不起作用.尝试签出到新文件夹对我来说不起作用.我真的不想从存储库中删除项目并替换它以使其工作.

我正在使用TortoiseSvn.任何人都有其他问题没有提出的想法吗?

svn version-control tortoisesvn

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

如何以编程方式使用EventTrigger和InvokeCommandAction?

我有一个弹出窗口,TextBox用户应该输入一个票号,然后当用户按下回车键时,我希望将票号传递给将检索票证的ViewModel.

这是以下的xaml TextBox:

<TextBox x:Name="TicketNumber">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="KeyDown">
            <i:InvokeCommandAction Command="{Binding OpenTicketCommand}" 
                                   CommandParameter="{Binding ElementName=TicketNumber,
                                                              Path=Text}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</TextBox>
Run Code Online (Sandbox Code Playgroud)

以上适用于任何按键,但我真的只希望在按下回车键时发生.我该怎么做呢?

编辑:我假设它必须以编程方式(因此标题),但如果不是那样也没关系.

wpf mvvm

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

重置vb6中的项目兼容性

当我们破坏vb6 dll中的兼容性时,我必须执行以下操作:

  1. 设置为无二进制兼容性
  2. 重新编译
  3. 再次设置兼容性
  4. 从使用它的所有项目中删除对已更改的dll的引用
  5. 将引用添加回使用它的所有项目
  6. 重新编译所有这些项目
  7. 对使用这些项目的任何项目执行相同的操作等.

当然,这有点简化,但之前完成它的任何人都应该知道我在说什么.

我的问题是:你有没有找到更好的方法来做到这一点,或者你找到了任何(不太昂贵的)工具来促进这个过程?或者更好的是,你创建了一个可以与我分享:)

请注意,我问的是如何使这个过程更容易,而不是如何避免它.因此,请不要给出关于破坏兼容性有多糟糕的答案,并且我们不应该这样做.我生活在现实世界里,那里有我无法控制的东西,我只是想处理我所拥有的东西.

vb6 com dll activex

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

EventLogQuery:如何形成查询字符串?

我有以下代码:

string query = "???";

EventLogQuery elq = new EventLogQuery("Application", PathType.LogName, query);
elq.Session = new EventLogSession("x.x.x.x");
EventLogReader elr = new EventLogReader(elq);
Run Code Online (Sandbox Code Playgroud)

我正在试图弄清楚我需要设置查询以查找源为"SQLSERVERAGENT"的所有条目.

c# event-log

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

在列布局方面,WPF Datagrid控件的行为可以像WinForms DataGridControl一样吗?

基本上,我想让WPF DataGrid控件布局完全按照WinForms DataGridView的方式进行.

更具体地说,这是我正在寻找的行为:

  • 网格控件应该占用它给定的空间(即,在其父控件中有足够的空间可供它使用).这里我指的是控件,而不是列.

  • 创建的列(无论是自动还是手动)可能占用也可能不占用所有这些空间.

  • 如果在创建列后剩余额外空间,则不应展开最后一列以填充此空间

  • 如果在创建列之后剩余额外空间,则不应创建其中没有任何内容的空列来填充此额外空间

据我所知,在WPF中,最后两个要点似乎是互斥的,你必须选择其中一个.有没有人找到办法做到这两点?我搜索了很多,并没有找到我正在寻找的东西,但是我发现的所有帖子往往都是几年了所以我希望有人已经把这个问题弄清楚了.

编辑:sa_ddam213,这是一个快速的xaml项目,我把它放在一起测试你的建议.

<Window x:Class="DataGridFix.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:DataGridFix"
        Title="MainWindow" Height="350" Width="525">

    <Window.Resources>
        <ObjectDataProvider x:Key="data"
                    ObjectType="{x:Type local:TestObject}"
                    MethodName="GetTestData" />
    </Window.Resources>
    <StackPanel>
        <DataGrid HorizontalAlignment="Left"  ColumnWidth="Auto" Height="150" VerticalAlignment="Top" ItemsSource="{Binding Source={StaticResource data}}" />
    </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

这是背后的代码:

namespace DataGridFix {public class TestObject {public int Id {get; 组; public string Name {get; 组; }

    public static List<TestObject> GetTestData()
    {
        var items = new List<TestObject>();

        items.Add(new TestObject() { Id = 1, Name = "Joe" });
        items.Add(new TestObject() { Id = …
Run Code Online (Sandbox Code Playgroud)

wpf layout datagrid

7
推荐指数
2
解决办法
1122
查看次数

在午夜分割时间记录

我正在尝试运行一些报告,并且必须处理整个员工劳动时间跨越午夜的问题.虽然我可以将午夜时分的记录拆分成两条记录,好像雇员在午夜时钟退出并同时在午夜时钟回来,从而完全避开了午夜问题.

所以,如果我有:

EmployeeId   InTime                     OutTime
---          -----------------------    -----------------------
1            2012-01-18 19:50:04.437    2012-01-19 03:30:02.433
Run Code Online (Sandbox Code Playgroud)

你认为如何分割这条记录是最优雅的方式:

EmployeeId   InTime                     OutTime
---          -----------------------    -----------------------
1            2012-01-18 19:50:04.437    2012-01-19 00:00:00.000
1            2012-01-19 00:00:00.000    2012-01-19 03:30:02.433
Run Code Online (Sandbox Code Playgroud)

是的,我已经彻底考虑了这可能会对现有功能产生什么影响......这就是为什么我选择在不影响现有功能的临时表中执行此操作的原因.

sql sql-server-2008

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

如何继续从命名管道/流发送/读取消息

我正在自学使用管道,我有两个应用程序,一个带有 PipeServer 类,另一个带有 PipeClient 类(如下所示)。服务器应用程序创建 PipeServer 的实例,并具有一个文本框,当文本框发生更改时,该文本框会调用 WriteMessage 方法。客户端应用程序创建 PipeClient 的实例,将 MessageReadEvent 设置为使用给定消息填充文本框的方法,然后调用 ReadMessages 方法。

第一次调用 ReadMessages 方法时,它会到达 sr.ReadLine() 并在那里等待,直到收到消息。收到消息后,下一次调用 sr.ReadLine() 自然会返回 null 并继续退出该方法。

此时,对 ReadMessages 的任何进一步调用都会出现异常,表明管道已关闭。我不确定我是否明白为什么管道会关闭。我如何保持它打开?我当然不必为每条要发送的消息创建一个新的管道实例吗?

下面是我的 PipeClient 类。如果有帮助的话,我也可以添加我的 PipeServer 类,但我认为问题出在此处......

    public delegate void MessageReadEventHandler(string message);

    class PipeClient: IDisposable
    {
        public event MessageReadEventHandler MessageReadEvent;

        NamedPipeClientStream _pipeClient;

        public PipeClient(string pipeName)
        {
            _pipeClient = new NamedPipeClientStream(".", pipeName, PipeDirection.In);
            _pipeClient.Connect();
        }

        public void ReadMessages()
        {
            string temp;

            // Is _pipeClient getting disposed when sr gets disposed??
            // I wouldn't think so but …
Run Code Online (Sandbox Code Playgroud)

.net c# stream named-pipes

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