小编Ela*_*lan的帖子

如何避免这两个SQL语句之间的死锁?

我有两个存储过程在不同的线程中运行,在SQL Server 2005上运行.一个过程将新行插入到一组表中,另一个过程从同一组表中删除旧数据.这些过程在表DLevelModel上遇到死锁.这是架构:

滚动条图像http://www.barramsoft.com/pub/images/DeadLock2.jpg

DFile:主键= DFileID
DLevel:主键= DLevelID,外键:DFileID
模型:主键= ModelID,外键:DFileID
ELement:主键= ElementID,外键1:DFileID,外键2:DLevelID

我已经隔离了导致死锁的确切的两个SQL语句(每个存储过程一个).我已经看到任何一个程序报告的死锁.我在两种情况下都使用top(1000),并且两个语句都在循环中执行,直到它们完成而没有剩下的行来删除/插入.

SQL语句1:

while (...)
begin
    delete top (1000) from DLevel where DFileID = @fileID1
    ...
end
Run Code Online (Sandbox Code Playgroud)

SQL语句2:

while (...)
begin
    insert into Element (ElementID, DFileID, LevelNum, ...)
       select top (1000) el.ElementID, el.DFileID, el.LevelNum, ...
       from   ElementLoader el with (nolock)
              left outer join Element e with (nolock)
                   on e.ElementID = el.ElementID
       where  el.DFileID = @fileID2
       and    e.ElementID …
Run Code Online (Sandbox Code Playgroud)

sql deadlock nolock sql-server-2005-express

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

NTFS和$ Object_ID上的唯一文件标识符

从我在网上找到的文章看来,NTFS上的文件似乎有两种形式的唯一标识符:

$ OBJECT_ID - 这是一个包含ID的属性.此ID由分布式链接跟踪服务使用.可以在快捷方式中找到如何使用它的示例.在桌面上创建指向文件的快捷方式.然后移动该文件.快捷方式仍然有效,因为除了路径和文件名之外,它还使用了一种方法来处理源文件.

并非所有文件都具有$ OBJECT_ID属性.实际上,直到分配实际ID才会将属性添加到文件中.

我试图了解何时设置了对象ID.以下是一些问题:

  1. 何时分配对象ID?根据上面的文章,在一种情况下,当创建文件的快捷方式时,会出现这种情况.

  2. 当文件引用另一个文件(例如嵌入Visio图表的Word文档)时,是否会自动分配对象ID?

  3. 只有在启用/运行分布式链接跟踪时才会分配对象ID,或者它们是否存在,而不管分布式链接跟踪?

  4. 如果我想跟踪文件的唯一标识符,那么在组合的卷序列号和文件索引(低/高)上使用对象ID(64字节)是否有任何好处,它们组合为12个字节.

谢谢,Elan

windows filesystems ntfs file

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

可以为NTFS文件夹添加自定义属性吗?

我希望能够将自己的自定义数据/属性添加到NTFS上的现有文件夹,以便在移动文件夹时,属性随之移动.一种解决方案是将文件存储在文件夹中以包含我需要或想要的任何内容.

我特别感兴趣的是,是否有一种方法可以将自定义属性添加到目录文件系统对象本身.

filesystems directory ntfs metadata

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

当存在多个不同语言的资源文件时,如何检索中性语言资源?

我有多个资源文件来支持不同的语言。用户将以他的首选语言呈现资源。正在对应用程序日志进行附加记录,我只想使用中性语言(英语)进行记录。

我不想要仅用于英语消息的专用资源文件。以最终用户的语言向最终用户显示的相同消息应该能够以英语另外记录到应用程序日志文件中。

这样做的最佳方法是什么?

c# culture resources localization resourcemanager

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

如何停止 Windows 服务进行升级安装?

我使用 Visual Studio 2008 开发了一个 Windows 服务和一个安装项目。当我进行升级安装时,我收到以下警告:

以下应用程序正在使用安装程序必须更新的文件。您可以关闭应用程序并单击“再试一次”,或单击“继续”以便安装程序继续安装,并在系统重新启动时替换这些文件。

我想在升级安装过程中停止 Windows 服务。我已尝试创建自定义操作并覆盖 OnBeforeInstall 方法,但是在警告弹出消息已经发生后调用此方法为时已晚。

作为 msi 安装程序的一部分,有什么方法可以实现这一点。在执行 msi 安装程序之前,我宁愿不必将此作为单独的任务来执行。

更新:
根据进一步的研究,我发现 MSI 数据库确实支持这一点,但是内置的 Visual Studio 安装程序(设置)项目不提供执行此操作的方法。必须调整 MSI 数据库,或者使用 WiX 或商业安装程序。

c# installation windows-installer windows-services

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

重建用户控件时,用户控件自定义属性会丢失状态

我有一个带有自定义属性的用户控件,如下所示:

[DefaultValue(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[Description("Gets or sets whether the \"Remove\" button is visible.")]
public bool ShowRemoveButton
{
    get
    {
        return this.removeButton.Visible;
    }
    set
    {
        this.removeButton.Visible = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

该控件包含一个标准按钮控件。该属性用于显示或隐藏按钮。用户控件内置于单独的项目程序集中。我把它放在一个表单上,我可以设置和取消设置上面的属性,一切似乎都很好。但是,当重新生成包含用户控件的项目时,属性值会翻转为“false”,这不是默认值。

重建控件时,如何防止自定义属性丢失/更改其状态?

c# user-controls properties custom-controls winforms

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

如何使用C#delegate调用不同的方法,其中每个方法都有不同的out参数?

以下问题和答案解决了在委托中使用out参数的问题:

带有out参数的Func <T>

我需要更进一步.我有几个转换方法(函数),我想利用一个委托.例如,让我们从下面的示例方法开始:

private bool ConvertToInt(string s, out int value)
{
    try
    {
        value = Int32.Parse(s);
        return true;
    }
    catch (Exception ex)
    {
        // log error
        value = 0;
    }

    return false;
}


private bool ConvertToBool(string s, out bool value)
{
    try
    {
        value = Convert.ToBoolean(s);
        return true;
    }
    catch (Exception ex)
    {
        // log error
        value = false;
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

然后我宣布了以下代表:

delegate V ConvertFunc<T, U, V>(T input, out U output);
Run Code Online (Sandbox Code Playgroud)

我想做的是这样的事情(伪代码):

if (do int conversion)
    func …
Run Code Online (Sandbox Code Playgroud)

c# generics delegates func

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

如何在控件模板中为WPF中的ListView列应用MinWidth?

继回答类似的问题在这里,我能够设置minWidth的XAML页面上.

我想要做的是在所有ListView中的所有GridViewColumn的控件模板中完成此操作.

这可能吗?

更新:

我在下面尝试了一些简单的示例代码,但它不起作用:

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

    <Window.Resources>
        <Style TargetType="{x:Type GridViewColumnHeader}" >
            <Setter Property="MinWidth" Value="200" />
        </Style>
    </Window.Resources>

    <Grid Width="500">
        <Border BorderBrush="Black" BorderThickness="2" Margin="20">
            <ListView SelectionMode="Single">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="Header 1" Width="Auto">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Text="Hello There"/>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Header="Header 2" Width="Auto" />
                    </GridView>
                </ListView.View>
            </ListView>
        </Border>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

wpf xaml listview gridviewcolumn controltemplate

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

如何在C#中设置一个线程只在CPU空闲时执行?

我在C#中有一个Windows服务.我希望某个线程执行特定操作,但仅限于CPU空闲时.有没有办法在C#中做到这一点.

c# windows-services cpu-usage

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

如何使用Windows shell获取文件扩展名的大图标?

我找到了关于获取文件甚至文件扩展名的系统映像的各种文章.我有以下方法,用于获取小型16x16和大型32x32图像.

    // DLL Import
    [DllImport("shell32")]
    private static extern IntPtr SHGetFileInfo(
        string pszPath,
        uint dwFileAttributes,
        ref SHFILEINFO psfi,
        uint cbFileInfo,
        uint uFlags);

    // Constants/Enums
    private const int FILE_ATTRIBUTE_NORMAL = 0x80;

    private enum SHGetFileInfoConstants : int
    {
        SHGFI_ICON = 0x100,                // get icon
        SHGFI_DISPLAYNAME = 0x200,         // get display name
        SHGFI_TYPENAME = 0x400,            // get type name
        SHGFI_ATTRIBUTES = 0x800,          // get attributes
        SHGFI_ICONLOCATION = 0x1000,       // get icon location
        SHGFI_EXETYPE = 0x2000,            // return exe type
        SHGFI_SYSICONINDEX = 0x4000,       // get …
Run Code Online (Sandbox Code Playgroud)

c# shell pinvoke winapi windows-shell

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