C# 筆記

未處理SQLite.Net.SQLiteException
HResult=-2146233088
Message=database is locked
Source=SQLite.Net.Platform.Win32html

SQLite只支持庫級鎖,庫級鎖意味着什麼?——意味着同時只能容許一個寫操做,也就是說,即事務T1在A表插入一條數據,事務T2在B表中插入一條數據,這兩個操做不能同時進行,即便你的機器有100個CPU,也沒法同時進行,而只能順序進行。表級都不能並行,更別說元組級了——這就是庫級鎖。可是,SQLite儘可能延遲申請X鎖,直到數據塊真正寫盤時才申請X鎖,這是很是巧妙而有效的。chrome

引自http://www.javashuo.com/article/p-guuroinp-ma.htmljson

目前用的是ReaderWriterLockSlim來控制app

 


Thread的使用方法:asp.net

new Thread(o =>
{
    //方法體
}).Start();

new Thread(o =>
{
    for (int i = 0; i < 100; i++)
    {
        Log.write(Log.type.test, this.GetType().Name, 650, "Buy => " + i.ToString());
        Thread.Sleep(1);
    }
}).Start();

異步多委託處理異步

delegate string MyDelegate(object model);
.....
void method (){
        //創建委託
        MyDelegate ADelegate = new MyDelegate(DelegateMethod1);
        MyDelegate BDelegate = new MyDelegate(DelegateMethod2);
        //異步調用委託,獲取計算結果
        IAsyncResult AResult = mybuyDelegate.BeginInvoke(para1, null, null);
        IAsyncResult BResult = mysellDelegate.BeginInvoke(para2, null, null);
        //此處可加入多個檢測對象
        WaitHandle[] waitHandleList = new WaitHandle[] { AResult.AsyncWaitHandle, BResult.AsyncWaitHandle };
        WaitHandle.WaitAll(waitHandleList);
        //返回數據
        string AData = mybuyDelegate.EndInvoke(AResult);
        string BData = mysellDelegate.EndInvoke(BResult);
}
....

string DelegateMethod1(object model){
....
return data;
}

 


 WinForm 控件數據加載,優化處理工具

void BuildTableDetail(List<object> source)
{
    this.dgv_Detail.Rows.Clear();
    this.dgv_Detail.Invoke((MethodInvoker)delegate ()
    {
        //處理
    });
}

 


C# JSON 字符串格式化post

 Newtonsoft.Json,這裏使用的版本是4.5開發工具

private string ConvertJsonString(string str)
{
   //格式化json字符串
   JsonSerializer serializer = new JsonSerializer();
   TextReader tr = new StringReader(str);
   JsonTextReader jtr = new JsonTextReader(tr);
   object obj = serializer.Deserialize(jtr);
   if (obj != null)
   {
       StringWriter textWriter = new StringWriter();
       JsonTextWriter jsonWriter = new JsonTextWriter(textWriter)
       {
           Formatting = Formatting.Indented,
           Indentation = 4,
           IndentChar = ' '
       };
       serializer.Serialize(jsonWriter, obj);
       return textWriter.ToString();
   }
   else
   {
       return str;
   }         
} 

原文連接http://www.javashuo.com/article/p-zglpgzgy-mg.html優化


未處理System.ArgumentException
HResult=-2147024809
Message=不能清除此列表
Source=System.Data

DataTable dt = (DataTable)tb_buy.DataSource;
dt.Rows.Clear();
tb_buy.DataSource = dt;

http://blog.sina.com.cn/s/blog_5420e00001015gty.html 


 

one = SOURCE1.FindAll(x => x.name == data).ToList();

LIST2 = SOURCE2.FindAll(delegate (model one)
{
return one.name == data
});

的區別


Log4net的配置步驟

1.引入log4net.dll

VS開發工具的建議使用NuGet包管理器

2.添加配置文件 "xxxxx.config",添加後,右鍵->屬性->[複製到輸出目錄:始終複製] ps:要是缺乏這一步,呵呵....!@#$^%&^%^%$

3.在項目/Properties/AssemblyInfo.cs 中增長條目

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "xxxxx.config", ConfigFileExtension = "config", Watch = true)]

4.新增Log記錄類文件阿斯頓發

 

  public static readonly log4net.ILog logdebug = log4net.LogManager.GetLogger("logdebug");
  public static void write(type type, string filename, int line, string description)
  {
     if (logdebug.IsDebugEnabled)
     {
         logdebug.Debug(string.Format("模塊:{0} 文件:{1} 行號:{2} 描述:{3}", type.ToString(), filename, line, description));
     }
  }

 

-------------------------------------------------------------------到此配置結束-----------------------------------------------------------------------------

/**********************************************如下是配置文件config的說明(與以上面的第4步驟有關聯)*******************************************/

主要分2個部分

第一部分是記錄器的名稱在log類中的 log4net.LogManager.GetLogger("logdebug"); 也正是用的此name

第二部分是記錄器的配置部分,存放到哪兒,日誌文件怎麼個命名法,日誌文件怎麼個分類.....

當初配置的時候想讓文件根據大小分割日誌的,可是一直不行,在此記錄下錯誤的配置

錯誤的配置

會出現文件不以大小分割一直增長文件的狀況

 

正確的配置:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net-net-1.0"/>
  </configSections>
  <log4net>
    <logger name="logerror">
      <level value="ALL" />
      <appender-ref ref="ErrorAppender" />
    </logger>
    <logger name="loginfo">
      <level value="ALL" />
      <appender-ref ref="InfoAppender" />
    </logger>
    <logger name="logdebug">
      <level value="ALL" />
      <appender-ref ref="DebugAppender" />
    </logger>
    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\Error\\error_"/>
      <param name="AppendToFile" value="true"/>
      <param name="RollingStyle" value="Composite"/>
      <param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;"/>
      <param name="StaticLogFileName" value="false"/>
      <param name="MaximumFileSize" value="10240KB"/>
      <param name="CountDirection" value="1"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="&lt;HR COLOR=Red&gt;%n日誌時間:%d [%t] &lt;BR&gt;%n日誌級別:%-5p &lt;BR&gt;%n日 志 類:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;"  />
      </layout>
    </appender>
    <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\Info\\info_"/>
      <param name="AppendToFile" value="true"/>
      <param name="RollingStyle" value="Composite"/>
      <param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;"/>
      <param name="StaticLogFileName" value="false"/>
      <param name="MaximumFileSize" value="10240KB"/>
      <param name="CountDirection" value="1"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="&lt;HR COLOR=Blue&gt;%n日誌時間:%d [%t] &lt;BR&gt;%n日誌級別:%-5p &lt;BR&gt;%n日 志 類:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;"  />
      </layout>
    </appender>
    <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
      <!--文件路徑,若是RollingStyle爲Composite或Date,則這裏設置爲目錄,文件名在DatePattern裏設置,其餘則這裏要有文件名。已經擴展支持虛擬目錄-->
      <param name="File" value="Log\\Debug\\debug_"/>
      <!--True/false,默認爲true。當文件存在時,是否在原文件上追加內容。-->
      <param name="AppendToFile" value="true"/>
      <!--建立新文件的方式,可選爲Size(按文件大小),Date(按日期),Once(每啓動一次建立一個文件),Composite(按日期及文件大小),默認爲Composite-->
      <param name="RollingStyle" value="Composite"/>
      <!--當RollingStyle爲Composite或Date,這裏設置文件名格式-->
      <param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;"/>
      <!--True/false,默認爲true。爲true時,RollingStyler的date值將無效。且爲true時,須要在file裏指定文件名,全部日誌都會記錄在這個文件裏。-->
      <param name="StaticLogFileName" value="false"/>
      <!-- 每一個文件的大小 -->
      <param name="MaximumFileSize" value="10240KB"/>
      <!-- 切割最多文件數 -->
      <!--<param name="MaxSizeRollBackups" value="100"/>-->
      <!--默認值爲-1。當文件超過MaximumFileSize的大小時,若是要建立新的文件來存儲日誌,會根據CountDirection的值來重命名文件。大於-1的值時,file裏指定的文件名會依次加上.0,.1,.2遞增。當等於或小於-1時,建立依賴於MaxSizeRollBackups參數值,建立備份日誌數-->
      <param name="CountDirection" value="1"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="&lt;HR COLOR=Orange&gt;%n日誌時間:%d [%t] &lt;BR&gt;%n日誌級別:%-5p &lt;BR&gt;%n日 志 類:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;"  />
      </layout>
    </appender>
  </log4net>

  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>

致謝此文http://blog.csdn.net/hr541659660/article/details/45575473


WinForm TabControl 選項卡 右置

屬性設置:

裏面內容用Panel盛裝

1.Panel 盛裝 控件

2.TabControl 調整屬性

3.放置Panel


沒法啓用程序 "http://localhost:xxxxxx" 操做在當前狀態中是非法的

 

>> 工具--選項--調試--常規--啓用asp.net的JavaScript調試(chrome和ie)去掉勾選 

相關文章
相關標籤/搜索