C#專案程式碼中,有個api用來得知連線狀態訊息的
x32比較簡單,可以
string dllGetConnectionStatus();
直接抓字串就好
內容是類似
// [O] 連線正常, 後面會有登入主機使用之身分
// [X] 連線錯誤, 後面會有錯誤相關訊息
// [*] 建立連線中, 所有訊息最後面為目前設定的連線主機
雖然這個api連線狀態對接收行情的部分沒有任何需要作處理的部分
(其實只要主機位置設正確,網路有通,行情就會自動銜接好不會有任何錯)
但是為了好奇,為了好玩,為了學寫程式,還是把它寫出來觀察,看連線的穩定性
所以是設計判斷第2個字 X , O , * 有異動時將此字串秀出來看
因為 x64 對這種回傳字串的處理方式要透過 IntPtr
IntPtr dllGetConnectionStatus();
而這方式 x86 也相容,所以寫這樣比較好通用
於程式中原本是這樣寫
給預設
string Conn = " ";//如api說明連線狀態有 O X *
程式中則是
if (Conn != dllReturnString(dllGetConnectionStatus()).Substring(1, 1))
{//連線狀態有變則於console中show出來
Conn = dllReturnString(dllGetConnectionStatus()).Substring(1, 1);
Console.WriteLine(DateTime.Now.ToString() + " " + dllReturnString(dllGetConnectionStatus()));
}
這段Code後來有大大建議,可以改用byte
給預設
byte ConnByte = 0;//如api說明連線狀態有 O X *
程式中則是
if (ConnByte != Marshal.ReadByte(dllGetConnectionStatus(), 1))
{//連線狀態有變則於console中show出來
ConnByte = Marshal.ReadByte(dllGetConnectionStatus(), 1);
Console.WriteLine(DateTime.Now.ToString() + " " + dllReturnString(dllGetConnectionStatus()));
}
聽說用 string 處理在效能上不好,差蠻多的
所以有好的寫法就學著點吧
|