小编Kai*_*Kai的帖子

TcpClient自动重新连接

在断开连接时(例如服务器本身)使Tcpclient自动重新连接到服务器的最佳方法是什么?

我目前使用的代码是:

public void ClientWork()
{
        TcpClient client = new TcpClient();

        try
        {
            try
            {
                client.Connect(ip, port);
            }
            catch(Exception ex)
            {
                logger.ErrorFormat("client.Connect: {0}", ex.Message);
                return false;
            }

            NetworkStream ns = client.GetStream();
            byte[] buff;

            while (__bRunning)
            {
                buff = new byte[1000];
                ns.Read(buff, 0, 1000);

                string line = System.Text.Encoding.Default.GetString(buff);
            }

            //ns.Close();
            client.Close();
        }
        catch(Exception e)
        {
            //Reconnect?
            client.Close();
            client = null;

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

我正在使用C#.NET

c# reconnect tcpclient

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

如何在加载数据时显示启动画面以消除时间?

在启动我的应用程序时,我首先必须读取一些数据,必须初始化一些表格等等.在那个时候,用户看到只是灰色准备好显示某些表格.

这持续几秒钟......

我想到了一个Splash Screen,它将数据加载到一个单独的Thread中,并显示需要多长时间.或者只是一个状态栏?

你会怎么做这样的事情?

我正在使用C#.NET 3.5 + Winforms

c# splash-screen time-wait winforms progress-bar

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

防止形式冻结

我想下载一张图片然后在图片框中显示.

起初我喜欢这样:

WebClient client = new WebClient();
client.DownloadFile(url, localFile);
pictureBox2.Picture = localFile;
Run Code Online (Sandbox Code Playgroud)

但这并不完美,因为在下载执行的时候,应用程序有点冷冻.

然后我改为:

public class ParamForDownload
{
    public string Url { get; set; }
    public string LocalFile { get; set; }
}
ParamForDownload param = new ParamForDownload()
        {
            Url = url,
            LocalFile = localFile
        };

      ThreadStart starter = delegate { DownloadMap (param); };
        new Thread(starter).Start();

        pictureBox2.Picture = localFile;



    private static void DownloadMap(ParamForDownload p) 
    {
        WebClient client = new WebClient();
       client.DownloadFile(p.Url, p.LocalFile);
    }
Run Code Online (Sandbox Code Playgroud)

但现在我必须做一些类似"等待线程结束"的事情,因为文件是在线程中访问的,同时也是通过DownloadMap方法将文件下载到文件中.

什么是解决这个问题最好的等待?

.net c# multithreading winforms

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

加载数据并在此期间显示启动画面

我需要从db4o数据库加载一些数据,这在我的应用程序启动时需要1或2秒,其余的必须等待,因为首先必须加载数据.在自己的线程中执行此操作意味着其余的必须等待线程完成.我想在加载数据期间做一个启动画面或其他东西,因为还需要一个自己的线程,对吗?你会怎么做?

我正在使用csharp,.net 3.5和winforms

.net c# splash-screen .net-3.5 winforms

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

只要没有单击任何项​​目,就防止 ToolStripDropDownButton 被关闭

在单击打开菜单的项目或箭头之前,如何防止 ToolStripDropDownButton 被关闭?

一个标准的 .net Winforms ToolStripDropDownButton 保持它的菜单只要你用鼠标悬停在菜单上...

我想在关闭事件中捕获它,然后说 e.Cancel = false 但不幸的是,ToolStripDropDownButton 似乎没有关闭事件,只有 ToolStripDropDown

.net c#

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

String.Format - 参数列表问题

string nr = "42245555" //just an example number
string expression = "{5}{6}/{7}{8}";

string res = String.Format(expression, new string[] {
nr[0].ToString(),nr[1].ToString(),
nr[2].ToString(), nr[3].ToString(), 
nr[4].ToString(), nr[5].ToString(), 
nr[6].ToString(), nr[7].ToString() 
});
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用,我该如何解决?我希望表达式可以是"{5}{6}/{7}{8}" or "{0}{3}/{7}{1}"用户想要的任何一种.

c# string

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

分裂的正则表达式

我想拆分一个字符串,比如

"[1-5]?3456[2-5][4-D]"
Run Code Online (Sandbox Code Playgroud)

array[0] = "[1-5]"
array[1] = "?"
array[2] = "3"
array[3] = "4"
array[4] = "5"
array[5] = "6"
array[6] = "[2-5]"
array[7] = "[4-D]"
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我,如果正则表达式分裂可能吗?

我有三个元素"3"一个字母(可以是1-9和AF,"?"一张白卡,"[1-5]"一个范围(相同的1-9 + AF)

编辑:匹配的示例是

"[1-5]?3456[2-5][4-D]"

"?4A9[1-F]?[A-D]1"

"12459987"

"[1-F][1-F][1-F][1-F][1-F][1-F][1-F][1-F]"
Run Code Online (Sandbox Code Playgroud)

.net c# regex split

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

预先关于Dialog

我确实需要一个关于我的应用程序的良好关于Dialog,类似于Visual Studio关于Dialog.我有点懒得自己设计并制作所有属性.

有人知道某个地方是否有一个预制的?谷歌根本没有帮助我......

C#+ Winforms

c# dialog winforms

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