C#的几点经验总结

1. 检查同一位置的应用程序是否已经运行

private static bool GetRunningProcessByProcessFullName(out Process runningProcess)
{
    bool returnValue = false;
    runningProcess = null;
    Process current = Process.GetCurrentProcess();
    Process[] processes = Process.GetProcessesByName(current.ProcessName);
    string assemblyName = Assembly.GetExecutingAssembly().Location;
    foreach (Process process in processes)
    {
        if (process.Id != current.Id)
        {
            if (process.MainModule.FileName == assemblyName)
            {
                runningProcess = process;
                returnValue = true;
                break;
            }
        }
    }
    return returnValue;
}

2. 解决多线程刷新界面控件的问题

private void UpdateControls()
{
    if (_lblStatus.InvokeRequired)
    {
        // In the thread, call delegate to flush controls
        FlushControls fc = new FlushControls(UpdateControls);
        this.Invoke(fc);
    }
    else
    {
        _lblStatus.Text = "在这里更新控件内容!";
        _lblStatus.ForeColor = Color.Red;
    }
}
// 多线程直接调用UpdateControls()函数即可

3. Post方式提交URL的方法

byte[] buf = null;
if (data != null)
{
    ASCIIEncoding encoding = new ASCIIEncoding();
    buf = encoding.GetBytes(data);
}
ServicePointManager.Expect100Continue = false;
request = (HttpWebRequest)WebRequest.Create(url);
request.CookieContainer = _cookie;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.KeepAlive = false;
if (buf != null)
{
    request.ContentLength = buf.Length;
    Stream reqStream = request.GetRequestStream();
    reqStream.Write(buf, 0, buf.Length);
    reqStream.Close();
}
response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
    responseStream = response.GetResponseStream();
    reader = new StreamReader(responseStream, Encoding.Default);
    strResponse = reader.ReadToEnd().Replace("\n", "").Replace("\r", "").Replace("\t", "");
}

4. Smtp发邮件的方法

public static bool SendEmail(string subject, string body)
{
    SmtpClient client = new SmtpClient(_config.SmtpServer, _config.SmtpPort);
    MailMessage mail = new MailMessage(_config.FromEmail, _config.ToEmail);
    bool ret = false;
    client.UseDefaultCredentials = false;
    client.Credentials = new NetworkCredential(_config.Username, _config.Password);
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.EnableSsl = _config.UseSsl;
    mail.IsBodyHtml = true;
    mail.Subject = subject;
    mail.Body = body;
    try
    {
        client.Send(mail);
        ret = true;
    }
    catch (Exception)
    {
    }
    return ret;
}

Tags:

Leave a Reply


提醒: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。请务必注意user必须和评论者名相匹配(大小写一致)。