2010-09-30 24 views
14

Tôi muốn nắm bắt tốt việc đa luồng trong C#. Tôi đã đọc một số bài báo như Joseph Albahari's tutorials giải thích các khái niệm, nhưng như bạn biết, cho dù bạn đọc bao nhiêu, phần lớn nó trở thành rác nếu bạn không thực hành. Tôi cần một cái gì đó có các ví dụ mã hướng dẫn và thực dụng liên quan đến thực tiễn cuộc sống thực, không phải một số ví dụ in một số dòng. Bạn có đề nghị nào không?Đề xuất tập thể dục để giúp tìm hiểu đa luồng trong C#

Trả lời

4

guys guys Tôi nghĩ rằng tôi đã tìm thấy một trang web tốt: planet-source-code.com. Tìm kiếm trong mã Net với từ khóa "chủ đề" dường như trở lại một số ví dụ tốt, như

  • đa đồng bộ hóa thư mục ren
  • đa luồng máy chủ TCP
  • tập tin nền downloader
  • async. socket
  • Chia sẻ tệp P2P
  • Trình kiểm tra thư POP3 đơn giản và nhiều thứ khác!

yay!

+0

Tôi nghĩ bạn nên sửa liên kết: xóa dấu gạch ngang sau ".com". – AlexSavAlexandrov

+0

OK, đã làm điều đó. Cảm ơn bạn. – aslisabanci

2

Nếu bạn đang làm bất kỳ winforms hoặc wpf phát triển, bạn sẽ nhanh chóng chạy qua các vấn đề khi bạn cố gắng làm "công cụ" trong chuỗi giao diện người dùng.

Giả sử bạn cần đọc và phân tích cú pháp nội dung của tệp XML lớn (2GB). Nếu công việc được thực hiện trong luồng giao diện người dùng, giao diện sẽ treo cho đến khi công việc được hoàn thành. Ngược lại, nếu bạn thực hiện công việc một cách chính xác trong chuỗi công việc, bạn có thể giữ cho UI phản hồi qua tin nhắn và cho người dùng biết bạn hiện đang làm gì (thanh trạng thái (ugh,) hoặc hiển thị văn bản Làm "Đọc XML", vv)

Một ví dụ đơn giản tốt là tạo một ứng dụng mẫu và để nó tắt một BackgroundWorker để xử lý một số công việc tùy ý trong nền (thậm chí có thể là Thread.Sleep (10000)), hoặc một cái gì đó tầm thường như thế.)

Tôi muốn nói đây là một trong nhiều điểm khởi đầu tốt trên đó về chủ đề này.

http://msdn.microsoft.com/en-us/library/cc221403%28VS.95%29.aspx

+0

Tôi đang ở trong khu vực giao tiếp nền chủ yếu, với ổ cắm và dịch vụ web. nhưng nhờ gợi ý, tôi sẽ bắt đầu với nó :) – aslisabanci

2

site này có một vài ứng dụng mẫu mà tôi nghĩ rằng sẽ là ứng dụng thực hành đàng hoàng để thực hiện. Tuy nhiên, có vẻ như các liên kết đến mã nguồn bị hỏng. Tuy nhiên, tôi tin rằng các ứng dụng trình bày đại diện cho các ví dụ rất thực tế. Một vài bao gồm:

  • Desktop Search
  • Download Manager
  • FTP Client
  • File Compression
  • Nhiều RSS Feeds
+0

yeah đây là những gì tôi đang tìm kiếm. quá xấu các nguồn đã biến mất: ( – aslisabanci

3

Một số loại ngẫu nhiên số-crunching là một thử nghiệm tốt cho điều này. Tôi đã dạy bản thân mình bằng cách viết một công cụ tìm số nguyên tố, sau đó chia số "tìm kiếm" của tôi thành các khối và sử dụng một chuỗi để làm việc qua từng số.

Điều này cho phép tôi đặt một số biến về kích thước khối, số lượng chủ đề cần sử dụng, thời gian chờ giữa quá trình kích hoạt vv để kiểm tra xem mỗi biến số này ảnh hưởng như thế nào đến hiệu suất.