Bất đồng bộ với Entity Framework, tại sao không?

thuvienwinform - Chỉ với một thay đổi nhỏ, phần mềm sẽ thay đổi đáng kể về hiệu suất cũng như tương tác với người dùng. Dòng chữ "Not Responding" sẽ đi vào dĩ vãng, người dùng sẽ có thêm thời gian để làm nhiều công việc hơn, tán gái chẳng hạn :D khi mà phần mềm của bạn chạy một cách trơn tru, mượt như bôi Neptune vậy.

Bất đồng bộ và câu chuyện bắt cá 2 tay
Trong khi người yêu lúc nào cũng kè kè bên cạnh thì làm sao bạn có thể tán tỉnh cô gái khác, thậm chỉ là lên Facebook, Instagram ngắm vài em xinh tươi cũng là cả một thử thách khó khăn. Nhưng nếu bạn điêu luyện, bạn sẽ sử dụng 2 tay của mình một cách hiệu quả. Một tay ôm ấp vuốt ve con gấu nằm cạnh cho nó tê còn một tay sẽ thoải mái mà vuốt cái màn hình điện thoại để ngắm các em xinh tươi và code :v. Với lập trình bất đồng bộ thì việc bắt cá 2 tay này vô cùng đơn giản, trong khi tiến trình chính đang try hart và chương trình đáng lẽ bị treo (như việc người yêu bạn kè kè bên cạnh vậy) và các code khác sẽ phải ém mình chờ đến lượt mình chạy (các em gái khác sẽ phải né mình chờ đến lượt được vuốt ve). Những tác vụ nặng, chiếm tài nguyên sẽ được đẩy ra một luồng xử lý khác, tiến trình chính vẫn được thực hiện, chương trình không hề bị treo. Hay tương tự như Windows vậy, trong khi code vẫn có thể nghe nhạc, xem phim, quay tay,...

Trong lập trình đồng bộ, các đoạn code được thực hiện tuần tự, code đứng sau chỉ được thực hiện khi code trước nó được thực hiện xong. Nhưng trong bất đồng bộ, code đứng sau có thể được thực hiện khi code đứng trước nó chưa thực hiện xong. Việc này có thể được thực hiện bằng việc tạo các thread nhưng trong .NET Framework 4.5 thì chỉ cần 2 từ khóa asyncawait thôi, bạn muốn mọc bao nhiêu tay cũng được.

Bạn đã thật sự biết cách ngoại tình khi sử dụng Entity Framework
Các phiên bản EF gần đây đã hỗ trợ bất đồng bộ cho một số hàm (những hàm, thủ tục kết thúc bằng Async) như LoadAsync, SaveChangesAsync,...tham khảo thêm tại đây.
Vấn đề đáng sợ nhất của làm việc nhóm là thay đổi công nghệ, tin mình đi. Để các coder sử dụng công nghệ mới sẽ mất cả năm trời, sản phẩm sẽ trở nên rời rạc, không ăn khớp nhưng với async, await thì code sẽ chỉ thay đổi một chút rất ít. Thay vì Load() nay chỉ cần tthay thế bằng await LoadAsync()
 
private async Task NapDuLieuAsync()
{
    XuLyDaLuong.ThayDoiTextLabel(lblTrangThai, "Đang tải dữ liệu...", Color.Red);
    _db = new QLTTTNModel();
    _dbCheck = new QLTTTNModel();

    //Load
    await _db.tbNguoiYeu1.Where(p => p.IdCuocTinh == _idCuocTinh).LoadAsync();
    await _db.tbNguoiYeu2.LoadAsync();
    await _db.tbNguoiYeu3.LoadAsync();
    await _db.tbNguoiYeu4.LoadAsync();
}
private async void frm_Load(object sender, EventArgs e)
{
    await this.NapDuLieuAsync();
}

Chỉ cần thêm async và await thôi, thay đổi không nhiều về lượng nhưng chất đã biến đổi. Phần mềm của bạn sẽ đốn tim hầu hết khách hàng với sự mượt mà của nó.
Hay sống thật vui và yêu thật nhiều :D
5/17/2017
Đăng bởi :
Nhãn : ,

Mời dùng thử phần mềm mã hóa file

thuvienwinform - Tự nhiên nhìn vào màn hình, 1 đống file text chứa nhiều thông tin các tài khoản game, diễn đàn của mình , link ... và thế là mình viết ra phần mềm này.

Chức năng cơ bản là mã hóa - giải mã file với mật khẩu, đơn giản như phần giới thiệu vậy :)

Giao diện chính



Link download (86kb) : 

11/02/2015
Đăng bởi :
Nhãn :

Mời dùng thử phần mềm chuyển định dạng font chữ CF3

thuvienwinform - Sau nhiều năm quy định bảng mã Unicode làm bảng mã chuẩn thì yêu cầu chuyển font chữ không còn nhiều như trước nữa, tuy vậy thì đôi lúc vẫn rất cần thiết và làm ta tốn nhiều thời gian. Chính vì vậy thuvienwinform viết ra phần mềm CF3 này nhằm chuyển định dạng font chữ cho các tệp word, excel,...giúp hỗ trợ người dùng chuyển đổi font chữ nhanh hơn tiết kiệm thời gian hơn.

Tải về:
Phiên bản thử nghiệm 1.0 beta: https://www.dropbox.com/s/97d02fw9e9ya32x/CF3%20Setup.exe?dl=0 (8MB)

Giao diện chính

Các chức năng chính:
- Chuyển định dạng font chữ cho các tệp Word, Excel, tệp văn bản,...

Ưu điểm:
- Chuyển được định dạng theo tệp.
- Với excel có thể lựa chọn các sheet cần chuyển và chuyển cả font của công thức.
- Với word có thể chuyển font toàn bộ nội dung tệp, cả chữ ở trong bảng, trong shape,..

Nhược điểm:
- Chức năng chuyển toàn bộ font chữ chưa hoạt động tốt.
- Chỉ chuyển được định dạng font chữ chứ chưa phát hiện được ký tự lỗi. Ví dụ chuyển từ TCVN3 sang Unicode:
ô (font TCVN3) -> ô (font Unicode)
å  (font TCVN3)-> å (font Unicode)
Tức là sẽ dữ nguyên ký tự, chỉ chuyển ký tự của bảng mã này -> sang bảng mã khác thôi
Vì vậy để chuyển đúng thì đầu tiên các ký tự ở tệp cần chuyển phải hiển thị đúng (đọc được) đã!

Rất mong nhận được ghóp ý của các bạn để phần mềm theo hoàn chỉnh.

9/05/2015
Đăng bởi :

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
8/13/2015
Đăng bởi :

Đó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 :

[Thông báo] Về việc các bài viết xuất hiện trên Blog khác

thuvienwinform - Rất nhiều bài viết đã được đánh cắp và xóa khóa (-thuvienwinform) ở đầu các bài viết.
Các bạn chú ý  : chúng tôi chỉ có 1 blog duy nhất :
thuvienwinform.blogspot.com
và Page duy nhất :
Tôi lập trình (fb.com/Toi.Lap.Trinh.2014)

Điển hình là blog : http://ducviet519.blogspot.com/

Thân !
4/15/2015
Đăng bởi :

Sửa lỗi tạo Diagram trong MS SQL Server Management studio

Nội dung lỗi:
Attempted to read or write protected memory. This is often an indication that other memory is corrupt. (Microsoft.VisualStudio.OLE.Interop).

Sửa:
Tải về: https://www.dropbox.com/s/qbxygjqxrblnxgc/thuvienwinform%20-%20Sua%20loi%20tao%20Dagram.rar?dl=0 (700KB)

Trong tệp nén có 2 thư mục (MSDesigners8, Visual Database Tools) các bạn paste vào
C:\Program Files (x86)\Common Files\Microsoft Shared (ghi đè luôn)
hoặc C:\Program Files\Common Files\Microsoft Shared là được.

Nếu vẫn không được thì copy 2 thư mục này trên một máy không bị lỗi và paste vào.
3/22/2015
Đăng bởi :
Nhãn :

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 :

Hot!! TeamViewer Full Crack!!!

Cài đăt TeamViewer dùng miễn phí



Cảm ơn đã xem ảnh!

Tải Teamviewer: http://www.teamviewer.com/vi/download/currentversion.aspx

Nếu dùng cho máy cá nhân thì chọn như hình sẽ được dùng MIỄN PHÍ! Các bạn cứ chọn Company với cả Bolth...thì nó chả đòi đống tiền :v

Nếu ai mà hỏi hoặc nhờ crack teamviewer hộ thì bạn cứ gỡ ra rồi cài lại và chọn như trong hình là xài ổn!

Cảm ơn các bạn đã đọc bài, cảm ơn Monitis đã tạo ra teamviewer, cảm ơn blogspot facebook đã giúp tôi mang tấm hình này đến mọi người, cảm ơn những người sinh thành nên tôi thì tôi mới có cơ hội được sử dụng teamviewer và chia sẻ đến mọi người! Cảm ơn Viettel đã cung cấp 3G để tôi truy cập mạng và chia sẻ tấm hình quý giá này,...

CHÂN THÀNH CẢM ƠN CÁC BẠN SẼ CHIA SẺ VÀ THÍCH HÌNH NÀY!
Đăng bởi :
Nhãn :

Các yêu cầu đóng gói phần mềm (có hoặc không có cơ sở dữ liệu)

thuvienwinform - Sau khi hoàn thành phần mềm thì công việc cuối cùng là đóng gói và triển khai cài đặt trên các máy tính để tiến hành sử dụng. Thế mà sau khi cài đặt chương trình không hoạt động mới đau chứ! Nguyên nhân chắc hẳn chưa đảm bảo các yêu cầu khi đóng gói để cài đặt trên máy khác, vậy cần những yêu cầu gì? Cần làm những gì để thỏa mãn các yêu cầu đó? Hãy cùng thuvienwinform giải quyết trong bài viết này.


Yêu cầu 1: Máy được cài phải đảm bảo các nền tảng cho chương trình hoạt động
Các nền tảng ở đây là phiên bản .NET dùng để viết phần mềm, ngoải ra còn các nền tảng thường được sử dụng như MS SQL (LocalDB, MS SQL Server,...), MS Office (nếu dụng CSDL Acess), DirectX, Microsoft Visual C++,...Máy cài muốn chạy được phần mềm thì phải được cài các nền tảng mà phần mềm sử dụng.

Để xem project được viết trên nền tảng .NET nào chọn Project -> [Tên project] Properties... (dòng cuối)

Cách 1

Cách 2

Ấn Applicaiton sẽ thấy phiên bản .NET của project (mục Target framwork)

Chú ý: Win XP không cài được phiên bản .NET 4.5 nên nếu muốn chạy trên win xp thì chọn .NET Framework 4 hoặc .NET Framework 4 Client Profile

Đường dẫn tải các phiên bản .NET: https://www.dropbox.com/s/h65eiyu449eh2rp/LinkTai.txt?dl=0

Để cài các nền tảng một cách tự động có thể sử dụng phần mềm đóng gói Advance Instaler (nếu cần hướng dẫn sử dụng các bạn bình luận phía dưới nha...vì trên mạng cũng nhiều bài hướng dẫn phần mềm này) nhưng khi thêm các trình cài các nền tảng này vào thì tệp cài đặt cũng sẽ rất nặng!

Yêu cầu 2: Đảm bảo đủ các thư viện cho chương trình hoạt động
Để đảm bảo một chương trình .NET hoạt động thì cần cung cấp đủ cho nó các thư viện. Cụ thể ở đây là các tệp .dll. Vậy làm sao để biết chương trình chúng ta cần những thư viện nào?

Rất đơn giản xem trong Refences:

Trong tab Solution 
mở thư mục References ra -> chọn các thư viện cần thiết -> Properties -> đặt copy local = true

Nếu bạn không xác định được là cần copy những thư viện nào thì CHỌN TẤT cho an toàn (dù sẽ làm chương trình nặng hơn đôi chút =]])


Sau khi Build thì các thư viện sẽ được copy vào Bin

Yêu cầu 3: Nếu sử dụng đến CSDL thì cần tạo chuỗi kết nối đúng đến CSDL
Vấn đề sẽ xuất hiện khi bạn cài trên máy khác -> làm đường dẫn đến tệp CSDL bị thay đổi so với trên máy code -> cần điểu chỉnh lại để kết nối đến được với tệp CSDL.

Để đơn giản thay lại chuỗi kết nối là được:
Ví dụ với việc dử dụng LocalDB
ADO.NET:

string duongDan = System.IO.Directory.GetCurrentDirectory() + "\\tentep.mdf;";
string chuoiKetNoi = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=" + duongDan + "Integrated Security=True;Connect Timeout=30";
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(chuoiKetNoi);


LINQ To SQL:

string duongDan = System.IO.Directory.GetCurrentDirectory() + "\\tentep.mdf;";
            string chuoiKetNoi = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=" + duongDan + "Integrated Security=True;Connect Timeout=30";
            DataContext db = new DataContext(chuoiKetNoi);

Chú ý: @

Tạm kết: chắc hẳn 3 yêu cầu này chưa thể thỏa được mọi trường hợp nhưng là 3 yêu cầu cơ bản để một phần mềm chạy được trên một máy tính.

Hãy sống thật vui và đóng gói phần mềm thật nhiều các bạn nhé:))
3/19/2015
Đăng bởi :

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