小编Sco*_*ain的帖子

在C#中,`DateTime?`类型中的`?`是什么?

我在使用System.DirectoryServices.AccountManagement时遇到了一些代码

public DateTime? LastLogon { get; }
Run Code Online (Sandbox Code Playgroud)

是什么 ?在DateTime之后.

我找到了一个参考?运算符(C#参考),但它不是一回事.(280Z28:这是使用Nullable Types的正确链接.)

c# nullable

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

如何将<>包含的项添加到文档注释中

我正在尝试编写文档注释但是我遇到了问题.

/// <summary>
/// Inserts an element into the System.Collections.Generic.List<T> at the specified
/// index.
/// </summary>
Run Code Online (Sandbox Code Playgroud)

当我到达<T>Visual工作室时,我认为我正在尝试添加另一个标签.添加这样的评论的正确方法是什么(如果我可以在生成的帮助文本中点击它们,这将是一个额外的奖励)

.net c# documentation comments visual-studio-2008

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

Foreach循环和任务

我从编码指南中知道我读过你不该做的

for (int i = 0; i < 5; i++) 
{ 
    Task.Factory.StartNew(() => Console.WriteLine(i));
}
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

因为它会写5 5,我明白了,我想我明白为什么会这样.我知道解决方案就是做

for (int i = 0; i < 5; i++) 
{ 
    int localI = i;
    Task.Factory.StartNew(() => Console.WriteLine(localI));
}
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

不过这样的事可以吗?

foreach (MyClass myClass in myClassList) 
{ 
    Task.Factory.StartNew(() => myClass.DoAction());
}
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

或者我需要做与在for循环中所做的相同的事情.

foreach (MyClass myClass in myClassList) 
{ 
    MyClass localMyClass = myClass;
    Task.Factory.StartNew(() => localMyClass.DoAction());
}
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

foreach .net-4.0 task

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

如果这个判断会导致坏事发生吗?

int expenseCode;
if (int.TryParse(sourceRecord.ExpenseCode, out expenseCode) && _ExpenseCodeLookup.ContainsKey(expenseCode))
{
     destRow.PROFIT_CENTER_NAME = _ExpenseCodeLookup[expenseCode];
}
else
     destRow.PROFIT_CENTER_NAME = "Unknown";
Run Code Online (Sandbox Code Playgroud)

我所关注的是第一个表达式是否会expenseCode在第二个操作之前运行(在过程中设置)?

c# if-statement operator-precedence

6
推荐指数
2
解决办法
165
查看次数

如果您点击或点击通知图标,如何获得不同的上下文菜单?

我有一个基于系统托盘的应用程序.如果你右键单击它我有一个很好的上下文菜单但是我想要一个不同的上下文菜单,如果你点击它就会出现.现在我把不同的菜单显示出来

private void niTrayIcon_MouseClick(object sender, MouseEventArgs e)
{
    if (e.Button == System.Windows.Forms.MouseButtons.Left)
    {
        cmsTrayLeftClick.Show(Cursor.Position);
    }

}
Run Code Online (Sandbox Code Playgroud)

这使得菜单显示但单击菜单不会使其消失,使菜单消失的唯一方法是单击项目或rt单击托盘图标.

我也想出了这个黑客,但它确实感觉这是正确的方法.

private void niTrayIcon_MouseClick(object sender, MouseEventArgs e)
{
    if (e.Button == System.Windows.Forms.MouseButtons.Left)
    {
        niTrayIcon.ContextMenuStrip = cmsTrayLeftClick;
        MethodInfo mi = typeof(NotifyIcon).GetMethod("ShowContextMenu", BindingFlags.Instance | BindingFlags.NonPublic);
        mi.Invoke(niTrayIcon, null);
        niTrayIcon.ContextMenuStrip = cmsTrayRtClick;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是正确的做法还是有更优雅的方式?

c# contextmenu notifyicon winforms

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

采取独家锁定的正确方法

我正在编写一个程序,用于协调实时数据库上的金融交易.我正在做的工作不能作为一个集合操作完成,所以我使用两个嵌套游标.

我需要在每个客户端协调时对事务表进行独占锁定,但我想释放锁定并让其他人在我处理的每个客户端之间运行查询.

我希望在行级别而不是表级别上执行独占锁定,但到目前为止我所读到的内容表明,with (XLOCK, ROWLOCK, HOLDLOCK)如果其他事务在READCOMMITED隔离级别(对我而言)运行,我就无法做到.

我是否正确地采用了表级别的独占锁,并且在Server 2008 R2中是否有任何方法可以使行级别的独占锁以我想要的方式工作而无需修改在数据库上运行的其他查询?

declare client_cursor cursor local forward_only for 
     select distinct CLIENT_GUID from trnHistory
open client_cursor

declare @ClientGuid uniqueidentifier
declare @TransGuid uniqueidentifier

fetch next from client_cursor into @ClientGuid
WHILE (@@FETCH_STATUS <> -1)
BEGIN
    IF (@@FETCH_STATUS <> -2)
    BEGIN
        begin tran

        declare @temp int

        --The following row will not work if the other connections are running READCOMMITED isolation level
        --select @temp = 1 
    --from trnHistory with (XLOCK, ROWLOCK, HOLDLOCK) …
Run Code Online (Sandbox Code Playgroud)

sql sql-server locking sql-server-2008-r2

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

视觉工作室2010快递和2012年快递开放ac#项目的差异

在将系统升级到Windows 8和Visual Studio 12 express之前,我使用了Express 2010版本工作了几个月.我尝试运行Windows 8的visual studio,但是当我尝试从我的2010打开我的c#项目时,它告诉我这个版本只支持窗口商店应用程序.

我的问题是哪个VS 2012 Express版本允许我处理我的C#项目?

c# visual-studio-2010 visual-studio-2012

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

试图上传到FTP:System.Net.WebException:系统错误

我有一个API,它接受XML并最终根据XML中的信息上传文件.上传按时间表(也来自XML),我测试了它周围的一切,并知道它的工作原理.

我在每个时间周期尝试上传的第一个文件上有大约40%的时间出现错误(某些文件的时间周期= 45分钟,其他文件的时间周期为30分钟).

这是我上传的代码:

try {
    LoggerFTP.Log("Uploading file: " + filename, false);

    // Create the request.
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(appSettingsFTP.ftpUrl + @"/" + filename);
    request.Method = WebRequestMethods.Ftp.UploadFile;
    request.Timeout = 6000000; //set to 100 minutes
    //request.Timeout = -1; //set to infinite

    // Add the login credentials.
    request.Credentials = new NetworkCredential(appSettingsFTP.ftpLogin, appSettingsFTP.ftpPassword);

    // Grab the file contents.
    StreamReader sourceStream = new StreamReader(appSettingsFTP.uploadFileDirectory + filename);
    byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
    sourceStream.Close();
    request.ContentLength = fileContents.Length;

    // Copy the file contents to the outgoing stream.
    Stream …
Run Code Online (Sandbox Code Playgroud)

c# ftp ftpwebrequest

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

加载powershell脚本可随时调用

我是powershell的新手,并且正在尝试使用此处发布的示例脚本(脚本本身)来计算文件哈希.我可以使用点表示法来使用它

. 'E:\Tools\Power Shell Scripts\Get-FileHash.ps1' E:\testfile.bin
Run Code Online (Sandbox Code Playgroud)

但是我希望能够像作者一样使用它,只需输入

Get-Filehash E:\testfile.bin
Run Code Online (Sandbox Code Playgroud)

我发现我能做到

function Get-FileHash {. 'E:\Tools\Power Shell Scripts\Get-FileHash.ps1'}
Run Code Online (Sandbox Code Playgroud)

但是这样做不正确,当我这样做时它会提示我输入文件 Get-Filehash E:\testfile.bin

我需要在配置文件脚本中放置什么才能正确加载此脚本并Get-Help Get-FileHash正常工作?

powershell powershell-2.0

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

更新到junit 5时保持build.xml的语法兼容性

我维护一个库,我们的大型组织将其用于其ant配置文件。我正在尝试从junit 4后端更新到junit 5后端,同时对最终用户的干扰最小。

我遇到的主要问题是输出格式化程序。我们有一个macrodef,它接受<element name="test-formatter"/>

<runmultipletest foo=...>
    <test-formatter>
        <formatter type="plain" usefile="false" />
        <formatter type="xml" usefile="true" />
    </test-formatter>
    <runmultipletest-fileset>
       <fileset refid="${junit.integration.fileset}"/>
   </runmultipletest-fileset>
</runmultipletest>
Run Code Online (Sandbox Code Playgroud)

在宏定义内部

<batchtest todir="@{test.todir}" skipNonTests="@{skipNonTests}">
    <test-formatter/>
    <runmultipletest-fileset/>
</batchtest>
Run Code Online (Sandbox Code Playgroud)

现在我要升级到junit5。在不破坏与最终用户用于转换现有格式的现有格式的向后兼容性的情况下

<formatter type="plain" usefile="false" />
<formatter type="xml" usefile="true" />
Run Code Online (Sandbox Code Playgroud)

进入

<listener type="legacy-plain" sendSysOut="true" sendSysErr="true"/>
<listener type="legacy-xml" sendSysErr="true" sendSysOut="true" outputDir="@{test.todir}"/>
Run Code Online (Sandbox Code Playgroud)

从我的macrodef内部?我可以弄清楚XSLT可以将xml转换成我想要的格式,但是我对Ant的了解还不够,无法知道是否可以转换传入的元素然后再junitlauncher使用它。

java ant junit junit4 junit5

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