小编Ian*_*ien的帖子

c#:找不到列表中的对象

我正在使用LINQ .Find(),当它找到匹配时它不会停止.我有:

List<ipFound> ipList = new List<ipFound>();

ipFound ipTemp = ipList.Find(x => x.ipAddress == srcIP); 

if (ipTemp == null) {
   // this is always null
}

public class ipFound
{
    public System.Net.IPAddress ipAddress;
    public int bytesSent;
    public int bytesReceived;
    public int bytesTotal;
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我在这里疯了.

谢谢!

c# list

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

通过电子邮件发送log4net日志作为System.Net.Mail.Attachment抛出IOException(进程已锁定)

我想将当前log4net日志作为电子邮件附件发送,System.Net.Mail.Attachment但是当我传入文件路径时,IOException会抛出一个.

Attachment mailAttachment = new Attachment(logPath);
Run Code Online (Sandbox Code Playgroud)

该进程无法访问文件'C:\ Log\log4net.log',因为它正由另一个进程使用

appender配置如下所示:

<appender name="RootRollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <param name="File" value="C:\Log\log4net.log" />
    <param name="AppendToFile" value="true" />
    <param name="MaxSizeRollBackups" value="10" />
    <param name="MaximumFileSize" value="10024KB" />
    <param name="RollingStyle" value="Size" />
    <param name="StaticLogFileName" value="true" />
    <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date [%username|%thread] %-5level %logger: %message%newline" />
    </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题?我可以复制出日志文件或以某种方式从锁定过程中释放它吗?

.net c# system.net.mail email-attachments

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

如何修复Visual Studio安装程序项目中的Warning 1910错误?

我有一个安装程序项目(Visual Studio安装项目),它具有指向项目输出的桌面和开始菜单链接.这两个快捷方式都链接到同一个输出程序集.

Visual Studio安装项目

当我尝试执行卸载时,我收到以下错误:

警告1910年

警告1910.Could不能删除Shortcut Bing Background.lnk.验证快捷方式文件是否存在以及是否可以访问它.

知道是什么导致了这个以及如何解决它吗?

installer windows-installer visual-studio-2010

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

从 Amazon s3 流读取文本

我使用以下代码从 Amazon S3 读取文本文件,并逐行处理它。这段代码可以工作,但问题是速度很慢。

 GetObjectRequest getObjRequest = new GetObjectRequest()
    .WithBucketName(amazonSettings.BucketName)
    .WithKey(_fileKey);
using (AmazonS3 client = AWSClientFactory.CreateAmazonS3Client(
    amazonSettings.AccessKey, 
    amazonSettings.SecretAccessKey))
using (GetObjectResponse getObjRespone = client.GetObject(getObjRequest))
using (Stream amazonStream = getObjRespone.ResponseStream)
{                        
    StreamReader amazonStreamReader = new StreamReader(amazonStream);
    tempGsContact = new GSContact();
    while ((_fileLine = amazonStreamReader.ReadLine()) != null)
    {
        if (_fileLine.Equals("END:VCARD"))
        {
            // Make process 1
        }
        else if (!_fileLine.Equals(string.Empty))
        {
            //Make process 2
        }
    }                        
}
Run Code Online (Sandbox Code Playgroud)

问题是:我能否得到更充分的方式来降低时间成本?

c# readline amazon-s3 streamreader readfile

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

如何创建SQL函数以返回BIT?

我在下面使用这个脚本来创建一个函数,但是在消息日志中出现错误:

CREATE FUNCTION [dbo].[MyFunction] () RETURNS BIT AS RETURN CAST(1 AS BIT) 
Run Code Online (Sandbox Code Playgroud)

Msg 102,Level 15,State 31,Procedure MyFunction,Line 1'RETURN'附近的语法不正确.

当我更改它以返回表格时,它可以工作:

CREATE FUNCTION [dbo].[MyFunction] () RETURNS TABLE AS RETURN (SELECT 1 [1])
Run Code Online (Sandbox Code Playgroud)

所以我不确定是什么问题.为什么这适用于表而不是一点?

t-sql user-defined-functions

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

如何在OnSelectedIndexChanged触发事件之前获取DropDownList上的上一项

DropDownListOnSelectedIndexChanged发生事件之前,我如何获得上一个项目?

示例:我有一个DropDownList名称作为其项目("John","Mark").默认情况下SelectedIndex是"John".在更改其索引并选择"标记"后,OnSelectedIndexChanged将触发该事件.当我使用ddlName.SelectedIndex它时,只返回"Mark"的索引,我想得到的是"John"的索引.

.net c# asp.net

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

取消任务

我尝试在取消下面的任务时运行一个简单的例子

CancellationTokenSource tokenSource2 = new CancellationTokenSource();

CancellationToken token2 = tokenSource2.Token;


Task task2 = new Task(() =>
{
    for (int i = 0; i < int.MaxValue; i++)
    {
        token2.ThrowIfCancellationRequested();
        Thread.Sleep(100);
        Console.WriteLine("Task 2 - Int value {0}", i);
    }
}, token2);

task2.Start();

Console.WriteLine("Press any key to cancel the task");
Console.ReadLine();

tokenSource2.Cancel();
Console.WriteLine("Task 2 cancelled? {0}", task2.IsCanceled);
Run Code Online (Sandbox Code Playgroud)

我预计 Console.WriteLine("Task 2 cancelled? {0}", task2.IsCanceled);会打印**"Task 2 cancelled? True"**,但它打印"假".

你知道发生了什么吗?这是预期的行为吗?谢谢.

编辑:确保在调用取消请求之前未完成任务.我加了Console.ReadLine().

.net c# task-parallel-library

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

通用c#循环(分区/排序)队列

我经常需要处理一个项目队列,其中没有一个用户应该能够阻塞队列,并且队列中的项目应该按某种顺序处理.我经常写一个类来做这个,但我认为应该有一些通用版本,但我找不到一个.

所以我正在寻找一个队列类,我可以在其中指定一个类型,一个分区选择器和一个选择器,以便我可以将对象添加到队列中,然后当我将对象退出时,我从第一个对象中获取我的订单说明符排序的下一个分区.

例如,我会像这样调用如何分区以及如何对队列进行排序:

 var queue = new RoundRobinQueue<Message>(
            _ => _.UserID,
            _ => _.SendDate
            );
Run Code Online (Sandbox Code Playgroud)

后,我已经添加了很多信息的,我可以Parallel.ForEach在我的队列中的项目,并处理它们在最早的顺序SendDate下一个User.这样,如果一个用户很慢,他的项目将不会阻塞队列,因为他只获得一个线程,但如果只有一个用户,他是唯一的分区,所以他获得所有线程.

我看了一遍,但在C#中找不到一个很好的通用实现.有任何想法吗?

c# linq queue round-robin

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

在c#中切换应用程序,如任务管理器

我想编写c#应用程序,它将在一些正在运行的应用程序之间切换.它应该像Windows中的Alt + Tab一样执行确切的功能.我使用SetForegroundWindow()Windows API中的函数,但如果在Windows任务栏上最小化应用程序,则它无法正常工作.所以我添加了ShowWindow()功能,但有一个问题是我无法以用户设置的原始大小显示窗口.

[DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);

[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
Run Code Online (Sandbox Code Playgroud)

示例:我最大化窗口,然后将其最小化到任务栏中.我打电话的时候:

ShowWindow(processWindowHandle, ShowWindowCmd.SW_NORMAL);
WindowsApi.SetForegroundWindow(processWindowHandle);
Run Code Online (Sandbox Code Playgroud)

窗口未最大化.我尝试使用ShowWindowCmd.SW_NORMAL参数,但结果相同.

c# winforms

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

我可以在 VS Code 中扩展现有的着色器或语言吗

我想要做的是创建一个扩展 HTML 支持的扩展 - 也就是说,它可以完成 HTML 支持所做的所有事情,甚至更多,其中包括以下内容:

  1. 语法突出显示(着色器)
  2. 智能感知
  3. HTML 格式
  4. 艾米特片段

本页列出了这些详细信息VS Code 中的 HTML 编程

最终我想创建一个支持Liquid 模板语法突出显示和自动完成的扩展。

我已经让#1 作为着色器独立工作,#2 可以通过语言服务器完成。

由于 Liquid 表达式被插入到 HTML 文档中,因此该插件应该构建在 HTML 支持之上/扩展 HTML 支持而不是覆盖它。这可能吗?

visual-studio-code vscode-extensions

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