小编G-.*_*G-.的帖子

我可以阻止StreamReader在使用时锁定文本文件吗?

StreamReader在读取文本文件时会锁定它.
我可以强制StreamReader以"只读"或"非锁定"模式工作吗?

我的解决方法是将文件复制到临时位置并从那里读取,但我更愿意直接使用StreamReader.任何替代建议?

背景:
我写了一个小应用程序来从日志文件中获取一些统计信息.该文件不断被外部程序更新(每秒几次),可以调用AAXXYY.

查看输出表明我的应用程序可能正在锁定文件并阻止AAXXYY写入.

这就是我正在做的事情

    private void btnGetStats_Click(object sender, EventArgs e)
    {
        int countStarts = 0;
        int countEnds = 0;

        IList<string> sessions = new List<string>();

        using(StreamReader stRead = new StreamReader(openFileDialog1.FileName,Encoding.Unicode))
        {
            while(!stRead.EndOfStream)
            {
                string line = stRead.ReadLine();
                if(line.Contains("Session start"))
                {
                    countStarts++;
                    sessions.Add(line.Substring(line.IndexOf("["), line.LastIndexOf("]") - line.IndexOf("[")));
                }
                if (line.Contains("Session end"))
                {
                    countEnds++;
                    sessions.Remove(line.Substring(line.IndexOf("["), line.LastIndexOf("]") - line.IndexOf("[")));
                }
            }
        }

        txtStarts.Text = countStarts.ToString();
        txtEnds.Text = countEnds.ToString();
        txtDifference.Text = (countStarts - countEnds).ToString();

        listBox1.DataSource = sessions;
    }
Run Code Online (Sandbox Code Playgroud)

.net c# concurrency logging filelock

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

如何确定表单上的哪个控件有焦点?

我在这里读过其他地方,要在文本框中捕获"Enter"键,并使用它就像按下按钮我应该将表单的KeyPreview属性设置为true并检查KeyDown的值.

我希望能够在几个TextBox控件上使用此功能,每个控件都与不同的Button相关联.

我的问题是如何知道哪个控件导致了KeyPress事件?发件人被列为表单本身.

G

.net c# controls focus winforms

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

在使用拖放的同时,我可以使Treeview扩展用户悬停的节点吗?

简单来说:

TreeNode拖放操作正在进行的同时,.Net 2.0中是否有任何内置函数可以扩展?

我在Visual Studio 2005中使用C#.

更详细:

我已经Treeview使用多级多线树(想想组织结构图或文件/文件夹对话框)填充了一个控件,我想使用拖放来移动树中的节点.

拖放代码运行良好,我可以放到任何可见节点上,但我希望我的控件在Windows资源管理器窗格上拖动文件时的行为就像Windows资源管理器一样.具体来说,我希望每个文件夹打开,如果徘徊1/2秒左右.

我已经开始使用Threading和一种Sleep方法开发一个解决方案,但我遇到了问题,并且想知道是否已经存在某些问题,如果不是,我会指责并学习如何使用线程(这是关于时间的,但我希望快速获取此应用程序)

我是否需要编写自己的代码来处理TreeNode在拖放模式下盘旋时的扩展?

c# treeview drag-and-drop hover winforms

12
推荐指数
1
解决办法
6500
查看次数

验证可用网络连接的最简单方法是什么?

我是c#/ .net开发的新手,但我已经为我公司的一小部分资产组建了一个股票跟踪应用程序.我还设置了它在SQL 2000中连接的数据库.

当网络连接可用时,它目前工作得非常出色,但是当我远离连接时,我想扩展它以供使用.

首先,我需要知道是否有可用的连接.所以我把它放在一起:

    private int availableNetAdapters()
    {
        int nicCount = 0;
        foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
        {
            if (nic.OperationalStatus == OperationalStatus.Up)
            {
                nicCount++;
            }
        }

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

似乎工作,但我必须测试"> 1",因为无论其他适配器状态如何,始终检测到"MS TCP环回接口".

是否有更好/更简单的方法来检查连接?

G

.net c# networking .net-2.0

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

如何保证NotifyIcon消失?

我正在我的一个子(模态)表单中使用NotifyIcon控件,它工作正常.按预期显示气球提示,处理鼠标事件等......但是,当我期望它时它不会消失.具体来说,当我退出子表单并且父级重新控制时,图标仍然存在.它的工具提示是可访问的,所以它非常"活着".

当我作为一个整体退出我的应用程序时,图像仍然保留,直到我将光标悬停在它上面.一旦被淹没,它就消失了.

我怎样才能让它正常运转?好的通常是一个坏词:-0当创建它的表单消失时,我怎么能让它消失?

有人可以解释导致这种情况的原因,我认为.net应该自行清理吗?

G

编辑:如果我以封闭的形式调用Dispose方法,这是有效的,但我真的必须这样做吗?G

.net c# dispose notifyicon winforms

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

在我执行所有更新之前,我可以暂停重新绘制表单吗?

使用C#和.Net 2.0,我使用的是不规则形状的表单(TransparencyKey,FormBorderStyle = None等等),并希望允许"正常"的边界模式.

我将背面颜色从Lime更改为默认值我将FormBorderStyle更改为FixedSingle我将TransparencyKey更改为Colour.None

不幸的是,这在屏幕上看起来完全混乱,图像向下跳跃几个像素并且向侧面和Lime绿色形式.

我认为这是由于在每行代码之后重新绘制表单引起的,是否可以暂停绘制表单直到我进行了更改然后只重绘一次表单?

G

.net transparency drawing redraw winforms

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

在多个名称相似的控件上调用DataBindings.Clear()

Originaly在不同的论坛上发布了一段时间,希望我能在这里找到更多的帮助:)

嗨,大家好,

我确信这是一个非常基本的问题,但我是很多编程和C#的新手.我发现我需要清除几个控件上的数据绑定,目前有:

            lblTableValue1.DataBindings.Clear();
            lblTableValue2.DataBindings.Clear();
            lblTableValue3.DataBindings.Clear();
            lblTableValue4.DataBindings.Clear();
            lblTableValue5.DataBindings.Clear();
            lblTableValue6.DataBindings.Clear();
            lblTableValue7.DataBindings.Clear();
Run Code Online (Sandbox Code Playgroud)

这不可能是做到这一点的最好方法吗?我还需要将所有这些文本值设置为"",我可以将它们分组并在整个组中调用清除吗?

非常感谢提前G.

c# grouping

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