zoukankan      html  css  js  c++  java
  • 近期总结

    1. 线程同步:
    private
     static readonly ManualResetEvent Event = new ManualResetEvent(false);
    in the thread:
    {
      xxx
      if (Interlocked.Decrement(ref _load) == 0)
           Event.Set();
      xxx
    }

    in the main thread:
    {
     for (int i = 0; i < _load; ++i)
      {
          ThreadPool.QueueUserWorkItem(ExecuteHiveJob)
      }   Event.WaitOne();
    }

    2. C#邮件类
         private static string _userMailUser = "user@domain.com";
            private static string _userMailPassword = "xxxxxxx";
            private static string _from = "user@domain.com";
            private static string _to = "user@domain.com";
            private static string _subject = "xxxx";
            private static string _body = "xxxx";
            private static string _smtpServer = "smtp.gmail.com"; // gmail smtp server
            private static int _smtpPort = 587;
         static void Main(string[] args)
            {
                var client = new SmtpClient();
                client.Port = _smtpPort;
                client.Host = _smtpServer;
                client.EnableSsl = true;
                client.Timeout = 10000;
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.UseDefaultCredentials = false;
                client.Credentials = new System.Net.NetworkCredential(_userMailUser, _userMailPassword);
     
                var mm = new MailMessage(_from, _to, _subject, _body);
                mm.BodyEncoding = UTF8Encoding.UTF8;
                mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
     
                client.Send(mm);
            }
    
    
    3. C#异步线程调用

        
         public Task<MobileServiceCollection<T, T>> QueryRecords()
            {   
                return todoTable.ToCollectionAsync(); // 异步方法
            }

        
          // 在调用方法内,如click方法中
        
    itemsProfile = await clientProfileTable.QueryRecords(); // 使用await关键字,程序执行到这里时,会直接跳过去(返回界面),待真正查询成功后,继续执行这条语句后面的语句,很适合View Model模式的应用。
         // do something
        

    在调用过程中,也可以捕捉异常,不过需要等过一段时间才能捕捉到异常,因此,必须加await等等异常抛出并捕捉。
                try
                {
                    await BuildProfile(UserProfiles.UserName);
                }
                catch (Exception e)
                { 
                }
     







  • 相关阅读:
    cmake自动添加宏定义
    Wapiti web扫描工具使用——支持ssl,看官方示例报告就知道如何支持带cookie和用户名密码的扫描了
    AI入门(重实践)书籍推荐
    初探零信任模型——就是假设所有的设备、人员等都是不可信的,在此基础上构建安全策略
    概率论疑难问题---7、通俗理解最小二乘法
    概率论疑难问题---6、极大似然估计
    概率论疑难问题---5、通俗理解中心极限定理
    matplotlib画直方图
    numpy数组添加元素
    概率论疑难问题---4、通俗理解概率论中的“矩”
  • 原文地址:https://www.cnblogs.com/codefinder/p/3673270.html
Copyright © 2011-2022 走看看