Showing posts with label SoftDesign. Show all posts

Chú ý khi sử dụng ProgressBar

thuvienwinform - Khi sử dụng ProgressBar để hiển thị phần trăm công việc đã hoàn thành trong chương trình làm nó trở nên đẹp mắt hơn rất nhiều, nhưng kéo theo chương trình sẽ chạy chậm hơn rất nhiều nếu không sử dụng điều khiển này đúng cách!
Ví dụ: https://www.dropbox.com/s/nk8hnadpxo3r6n2/ThuVienWinform-ChuYKhiSuDungProgressBar.rar?dl=0
Trong tệp ví dụ này mình chạy vòng for 10000000 lần (for(int i = 1; i <= 10000000; i++) và dùng 1 ProgressBar để hiện thị xem vòng for chạy được bao nhiêu phần trăm rồi.

Trường hợp 1: ProgressBar.Maximum = 10000000; (cứ i tăng là cập nhật ProgressBar.Value - Cập nhật ProgressBar 10000000 lần).
Trường hợp 2: ProgressBar.Maximum = 100; (Tính toán cập nhật ProgressBar đúng 100 lần).
Với trường hợp 1 tốn 15s, trường hợp 2 chưa đến 1s. Vậy chứng tỏ rằng mỗi lần cập nhật ProgressBar.Value tốn rất rất nhiều thời gian, có lẽ vì liên quan đến đồ họa :3

Kết: Vị vậy khi sử dụng điều khiển này cần tính toán làm sao cho số lần cập nhật ProgressBar.Value không quá nhiều lần mà vẫn hiển thị được phần trăm công việc đang thực hiện

Đóng gói phần mềm - Đặt tất cả thư viện liên kết động (DLL) vào 1 thư mục

thuvienwinform - Đóng gói phần mềm - Đặt tất cả thư viện liên kết động (DLL) vào 1 thư mục

Đôi khi phần mềm của bạn sử dụng quá nhiều thư viện (*.dll), sau khi build rất khó tìm được Excute file (.exe) để chạy phần mềm. Vì vậy bạn muốn đặt tất cả *.dll ấy vào 1 folder nào đó để dễ nhìn hơn.

Sau đây mình sẽ hướng dẫn bạn làm việc đó chỉ trong 1 dòng Code. Tại phương thức Main trong file Program.cs bạn thêm dòng code sau :
 
AppDomain.CurrentDomain.AppendPrivatePath(AppDomain.CurrentDomain.BaseDirectory + @"\Library");

Trong đó "Library" chính là tên thư mục chứa tất cả *.dll của bạn AppDomain.CurrentDomain.BaseDirectory  xác định thư mục phần mềm của bạn.

Chúc 1 ngày làm viêc vui vẻ ^^!
7/30/2015
Đăng bởi :

Tạo mã kích hoạt cho phần mềm



thuvienwinform - Mình là mình kịch liệt phản đối việc những phần mềm đòi mã kích hoạt để tiếp tục sử dụng nhé! Biết chúng mày giỏi rồi lại còn đòi tiền, mịa nghĩ cũng cay. Nhưng làm ra được mấy cái (tạm gọi là phần mềm :v) thì cũng thấy mình phải nhận lại được cái gì đấy. Ví dụ như "Đã hết thời gian dùng thử. Vui lòng mua mã kích hoạt để tiếp tục sử dụng" || "hãy soạn tin nhắn theo cú pháp XXX 69 gừi 9669 để sử dụng phần mềm" || đơn giản chỉ là tăng lượt truy cập vào trang web để người ta biết đến mình :D "Truy cập ngay 69xxx96.com để nhận nhận mã VIP", bla bla...


Ảnh minh họa

Thường thì yêu cầu của những mã này là mỗi máy một mã kích hoạt riêng. Chả biết người ta làm thế nào nhưng từ ngày xửa ngày xưa, lúc mà người già không nhớ, trẻ con chưa biết, xưa lắm, thì máy tính ra đời và được gắn các mã số cố đĩnh như mã ổ cứng, card mạng,...thì đơn giản có thể dùng chính những mã này làm mã kích hoạt :)) 

if(MaNhapVao == MaOCung())
{
     ThongBao("Kích hoạt thành công!");
     //
}


Mạnh hơn thì viết ra các hàm mã hóa các mã này thành dạng khác

if(MaNhapVao == MaHoa(MaOCung()))
{
     ThongBao("Kích hoạt thành công!");
     //
}

Hoặc các hàm sinh mã theo thời gian: mã có tác dụng trong 69 phút chẳng hạn...

Khá là nhiều cách. Nhưng làm sau mà mỗi lần cài đều phải có một mã kích hoạt riêng mới hay :))

Hay hiện nay có một số phần mềm cần kết nối mạng để kích hoạt thì sẽ so sánh mã nhập vào với mã trên máy chủ cung cấp xem có đúng không, nếu đúng phần mềm sẽ được kích hoạt và xóa mã đó đi. Cách này sẽ có thể thực hiện đồng bộ hóa với máy chủ thông qua tài khoản người dùng => sau khi cài lại chỉ cần đăng nhập sẽ sử dụng được.

Chém vậy thui chứ nếu làm dự án lớn thì cái này có cả một đội chuyên nghiên cứu vấn đề này, đồng tiền bát gạo mà. Nhưng trên đây là những cách khá là đơn giản và cũng khá là hiệu quả cho những chương trình nho nhỏ.

Xin mời để lại ý tưởng cũng như ý kiến về vấn đề này ở phần bình luận.
3/20/2015
Đăng bởi :

Nhận ngay 100$ cho VPS

Mua hàng ủng hộ page

Ủng hộ page

Nhãn

Code (45) Team Foundation Server (17) Database (14) News (14) product (13) toolbox (10) Linq (9) SoftDesign (8) XNA (6) API (5) Project (5) item (4)

- Bản quyền thuộc về Thư Viện WinForm - Giao diện: Metrominimalist - Thiết kế: Johanes Djogan -