在断开连接时(例如服务器本身)使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
在启动我的应用程序时,我首先必须读取一些数据,必须初始化一些表格等等.在那个时候,用户看到只是灰色准备好显示某些表格.
这持续几秒钟......
我想到了一个Splash Screen,它将数据加载到一个单独的Thread中,并显示需要多长时间.或者只是一个状态栏?
你会怎么做这样的事情?
我正在使用C#.NET 3.5 + Winforms
我想下载一张图片然后在图片框中显示.
起初我喜欢这样:
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方法将文件下载到文件中.
什么是解决这个问题最好的等待?
我需要从db4o数据库加载一些数据,这在我的应用程序启动时需要1或2秒,其余的必须等待,因为首先必须加载数据.在自己的线程中执行此操作意味着其余的必须等待线程完成.我想在加载数据期间做一个启动画面或其他东西,因为还需要一个自己的线程,对吗?你会怎么做?
我正在使用csharp,.net 3.5和winforms
在单击打开菜单的项目或箭头之前,如何防止 ToolStripDropDownButton 被关闭?
一个标准的 .net Winforms ToolStripDropDownButton 保持它的菜单只要你用鼠标悬停在菜单上...
我想在关闭事件中捕获它,然后说 e.Cancel = false 但不幸的是,ToolStripDropDownButton 似乎没有关闭事件,只有 ToolStripDropDown
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}"用户想要的任何一种.
我想拆分一个字符串,比如
"[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) 我确实需要一个关于我的应用程序的良好关于Dialog,类似于Visual Studio关于Dialog.我有点懒得自己设计并制作所有属性.
有人知道某个地方是否有一个预制的?谷歌根本没有帮助我......
C#+ Winforms