Category C Sharp

[C#] คำแนะนำสำหรับการพัฒนา App แบบ Console เพื่อทำงานเป็น Batch ผ่าน Schedule Task

วันนี้มาเขียน Blog ดึกไปหน่อย ถือว่าฉลองเดือนธันวาคมที่แสนอบอุ่นและกัน 555 มาเข้าเรื่องกัน โดยหลายๆครั้งที่เราต้องพัฒนา Console App เพื่อทำงานในลักษณะที่เป็น Background Process ถ้าเป็นการเรียกใช้งานผ่านตัว User หรือ Application อื่นๆ อย่าง Winform โดยตรงมันก็ไม่มีปัญหาอะไรนัก แต่ถ้าเป็นการเรียกใช้ผ่าน Task Schedule หละ ? ปัญหาของผม คือ ว่า เราจะทำให้ตัว Task Schedule(หรืออาจจะเป็น App อื่นที่เรียกใช้ใน Batch) รู้ได้อย่างไรว่า Exe ที่เรียกใข้งาน มันทำงานเสร็จแล้ว ? ในตอนแรก…

[C#] สรุปข้อดี-ข้อเสียในการอ่านกับเขียน Excel จากวิธีต่างๆ

พอดีช่วงนี้มีงานที่ให้ดึงไฟล์จากเว็บมา และเรามาจัดแต่งรูปแบบไฟล์ Excel นั้น เพื่อ Import เข้าระบบครับ โดยผมได้ทดลองศึกษามา และขอเปรียบเทียบข้อดีข้อเสียไว้ เผื่อมีคนอื่นมาใช้งานครับ แนวทางที่ 1: การใช้ OLEDB จุดเด่น ทำงานได้รวดเร็ว ไม่จำเป็นต้องติดตั้ง Microsoft Office ลงที่เครื่อง Data Type ของแต่ละ Column ระบบจะมองเป็นจากแนวแรกที่อ่าน (อารมณ์เดียวกับการใช้ตารางครับ) จุดด้อย การอ่านข้อมูลเฉพาะตามเงื่อนไข หรือ Pattern ที่กำหนดนั้นทำได้ยาก การแก้ไขไฟล์ Excel นั้นทำได้ยาก แนวทางที่ 2: การใช้ Excel Interop Object…

[Power Shell] Integrated PowerShell with C# Application

มาต่อบทความการใช้ C# กับ PowerShell สักที หลังจากไปลองสร้าง Winform Application จาก PowerShell เพียวๆกันแล้ว โดยคราวนี้ เราใช้โจทย์ของคราวที่แล้วแหละ โดยมีการออกแบบหน้าจอ ดังรูป จัดการ Add Code Event ต่างๆให้เรียบร้อย (อันนี้ผมใช้ Pattern MVP นะครับ เผื่อคนโหลดไปแกะ Code) จากนั้น เราต้องทำให้ C# รู้จักกับ PowerShell กันก่อน โดยการ Add Reference DLL เข้ามาใน Project ครับ โดยเราจะ Add…

[C#] Struct VS Class

struct- object อยู่บน stack – มี default constructor เสมอ ไม่ว่าจะมี custom constructor หรือไม่สร้างก็ตาม- value type- รู้ life time ของ object (out of scope) -มี Method (ในภาษา C จะไม่มีนะ)class- object อยู่บน manage heap- ถ้ามี custom constructor จะไม่มี default constructor- reference type- ไม่รู้…

[SQLite] System.Data.SQLite.SQLiteConnection cannot be cast to …

C# Logo

เวันนี้เขียนโปรแกรม C# กับ SQLite อยู่ดีๆ Bulid ผ่านะ แต่ Runtime Error โดยมี Message แจ้ง ดังนี้ [A]System.Data.SQLite.SQLiteConnection cannot be cast to [B]System.Data.SQLite.SQLiteConnection. Type A originates from ‘System.Data.SQLite, Version=1.0.92.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139’ in the context ‘Default’ at location ‘C:\Users\Chatr_000\Desktop\InvConfig(AutoRegisDLL)\InvConfig\bin\Release\System.Data.SQLite.dll’. Type B originates from ‘System.Data.SQLite,…

[C#] แสดง Bullet (ฺจุดลิสต์รายการ) ในโปรแกรมของเราได้อย่างไร

C# Logo

เมื่อเราพัฒนาระบบขึ้นมา ระบบต้องมีการโต้ตอบ หรือให้ข้อมูลต่างๆแก่ user ซึ่งถ้าเราแสดงตัวอักษรอย่างเดียวไป มันอาจจะทำให้อ่านยาก และไม่สวยงามด้วย วันนี้ผมมานำเสนอการพิมพ์ Bullet หรือจุดลิสต์รายการ เพื่อให้ข้อมูลแสดงออกมาให้ดูง่าย ดังนี้ ก่อนอีกเลย เราต้องรู้ว่าอักษร Bullet หรือ จุดนี่ มันมีค่า Unicode ค่าอะไร เมื่อประกาศค่าคงที่เรียบร้อยแล้ว เราสามารถนำใส่ต่อกับ String ที่ต้องการได้เลยครับ อันนี้ผมนำไปใช้เพื่อแสดงรายละเอียดการแก้ไขโปรแกรม หรือ change log ให้ดูได้ง่ายขึ้นนะครับ ตัวอย่างเมื่อ Run Program ครับ

[C#] กำหนดให้โปรแกรมของเรา Run As Administrator

C# Logo

ในบางครั้งเราต้องเขียนโปรแกรมเพื่อจัดการข้อมูลที่สำคัญ และต้องมีสิทธิในการแก้ไข เช่น Registry หรือ ไฟล์ของระบบของ Windows เป็นต้น ซึ่งสิทธิที่ใช้ในการจัดการนี้ คือ Administrator นั้นเอง ปกติแล้วเราจะคลิกขวาแล้วให้โปรแกรม Run As Administrator คราวๆนี้ ถ้าเราพัฒนาโปรแกรมขึ้นมา แล้วให้รันเป็น Administrator โดยมีวิธีการ ดังนี้