小编ade*_*825的帖子

在C#中将文本添加到文件的开头和结尾

我有一个进程可以获取一系列"xml"文件.我把xml放在引号中的原因是文件中的文本没有一个根元素,它使得xml无效.在我的处理中,我想纠正这个并打开每个文件,在每个文件的开头和结尾添加一个根节点,然后将其关闭.这是我的想法,但这涉及打开文件,读取整个文件,在节点上标记,然后写出整个文件.这些文件的大小可能超过20 MB.

        foreach (FileInfo file in files)
        {
            //open the file
            StreamReader sr = new StreamReader(file.FullName);

            // add the opening and closing tags
            string text = "<root>" + sr.ReadToEnd() + "<root>";
            sr.Close();

            // now open the same file for writing
            StreamWriter sw = new StreamWriter(file.FullName, false);
            sw.Write(text);
            sw.Close();
        }
Run Code Online (Sandbox Code Playgroud)

有什么建议?

c# xml file-io

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

如何确定应用程序正在使用的窗口句柄数?

确定应用程序使用的窗口句柄数的最佳方法是什么?我可以使用工具或WMI性能计数器吗?

我想运行一个应用程序并观察某种类型的计数器,并看到窗口句柄的数量正在增加.

for (int i=0; i < 1000; i++)
{
    System.Threading.Thread.Sleep(1000);
    RichTextBox rt = new RichTextBox();
    rt.Text = "hi";
    this.Controls.Add(rt);
}
Run Code Online (Sandbox Code Playgroud)

我正在运行上面的代码并在进程中观察"Handle Count"计数器,并且它似乎没有增加.我有什么不正确的看法吗?

windows winapi

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

在C#中提供方法的同步和异步版本

我正在用C#编写API,我想提供公开可用方法的同步和异步版本.例如,如果我有以下功能:

public int MyFunction(int x, int y)
{
   // do something here
   System.Threading.Thread.Sleep(2000);
   return  x * y;

}
Run Code Online (Sandbox Code Playgroud)

如何创建上述方法的异步版本(可能是BeginMyFunction和EndMyFunction)?是否有不同的方法来实现相同的结果,各种方法的好处是什么?

.net c# asynchronous

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

为什么枚举通过集合抛出异常但循环遍历其项目却不会

我正在测试一些同步结构,我注意到一些困扰我的东西.当我在同时写入一个集合时枚举它时,它抛出了异常(这是预期的),但是当我使用for循环遍历集合时,它没有.有人可以解释一下吗?我认为List不允许读者和作者同时操作.我希望循环遍历集合以展示与使用枚举器相同的行为.

更新:这是一个纯粹的学术练习.我强调,如果列表同时写入列表是很糟糕的.我也明白我需要一个同步结构.我的问题是关于为什么一个操作会像预期的那样抛出一个异常,而另一个却没有.

代码如下:

   class Program
   {
    private static List<string> _collection = new List<string>();
    static void Main(string[] args)
    {
        ThreadPool.QueueUserWorkItem(new WaitCallback(AddItems), null);
        System.Threading.Thread.Sleep(5000);
        ThreadPool.QueueUserWorkItem(new WaitCallback(DisplayItems), null);
        Console.ReadLine();
    }

    public static void AddItems(object state_)
    {
        for (int i = 1; i <= 50; i++)
        {
            _collection.Add(i.ToString());
            Console.WriteLine("Adding " + i);
            System.Threading.Thread.Sleep(150);
        }
    }

    public static void DisplayItems(object state_)
    {
        // This will not throw an exception
        //for (int i = 0; i < _collection.Count; i++)
        //{
        //    Console.WriteLine("Reading " + _collection[i]);
        // …
Run Code Online (Sandbox Code Playgroud)

.net c# synchronization list enumerators

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

免费或开源协作/电子学习软件

我正在寻找开源或免费的数据协作软件.具体来说,这是一个非营利性组织,希望教远程学生如何使用外语.这个想法是教师会教课,一次最多可以有10名学生.教师可以发布幻灯片或其他教材,学生可以远程在他们的计算机上看到它.视频不是必需的,但音频是必须的.有什么建议?

此外,如果这些产品之间有任何评论或功能比较,我会有兴趣听到它们.

product

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

C#Collection其项目到期

我在C#中编写一个控制台应用程序,我希望在预定义的时间内缓存某些项目(假设1小时).我希望已添加到此缓存中的项目在过期后自动删除.我可以使用内置数据结构吗?请记住,这是一个控制台应用程序而非Web应用程序

c# caching data-structures

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

使用Perl从SQL Server检索数据时如何处理非ASCII字符?

我有一个在UNIX上运行的Perl脚本,它使用DBI连接到SQL Server数据库并从中检索数据.该脚本如下所示:

$dbh = DBI->connect("dbi:Sybase:server=$connect;charset=UTF-8", $login, $password) or die("Couldn't connect to $connect as $login/$password:
$DBI::errstr");


$sql = "use mydb";
$sth = $dbh->prepare($sql);
$sth->execute or die("execute failed");
$sth->finish;


$sql = "MyProc \@DATE='1/1/2008'";
$sth = $dbh->prepare($sql);
$sth->execute or die("execute failed");
while (($body) = $sth->fetchrow()) {
        print "$body\n";
}
$sth->finish;

$dbh->disconnect if $dbh;
Run Code Online (Sandbox Code Playgroud)

body变量从NVARCHAR列中检索数据并包含非ASCII字符.查询运行正常,但print语句吐出????? 当遇到非ASCII字符时.在DBI-> connect中我甚至指定了字符集,但没有运气.

有关如何让它工作的任何想法?

sql-server perl dbi

0
推荐指数
1
解决办法
2035
查看次数