cuốn sách gpt4 ai đã làm

Tại sao ApplicationException bị ném?

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 18:39:36 25 4
mua khóa gpt4 Nike

Tôi vừa thử nghiệm trên Mutex và viết đoạn mã sau.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

không gian tên Mutex_WaitOnewithTimeouts
{
class Program
{
tĩnh riêng Mutex mut = new Mutex();
int tĩnh riêng numOfThreads = 5;
int tĩnh riêng numOfIterations = 3;
riêng tư ngẫu nhiên Rand = new Random();

static void Main(string[] args)
{
Chủ đề [] chủ đề = Chủ đề mới [5];
cho (int num = 0; num < numOfThreads; num++)
{
thread[num] = new Thread(new ThreadStart(MyThreadProc));
thread[num].Name = String.Format("Thread{0}", num);
chủ đề[num].Start();
}
Console.Read();
}

khoảng trống tĩnh riêng MyThreadProc()
{
for (int iteration = 0; iteration < numOfIterations; iteration++)
{
UseResource();
}
}

khoảng trống tĩnh riêng tư UseResource()
{
Console.WriteLine("{0} truy cập ", Thread.CurrentThread.Name);
int time = (int)(rand.NextDouble() * 100);
thử
{
if (mut.WaitOne(thời gian))
{
Console.WriteLine("Yippie có mutex cho {0}", Thread.CurrentThread.Name);
Thread.Sleep((int)rand.NextDouble() * 5000);
}
khác
{
Console.WriteLine("Không.... Đã hết thời gian chờ cho {0}", Thread.CurrentThread.Name);
}
}
bắt (AbandonedMutexException cũ)
{
Console.WriteLine("Đã bắt được ngoại lệ");
}
finally
{
Console.WriteLine("Phát hành mutex cho {0}", Thread.CurrentThread.Name);
mut.ReleaseMutex();

}

}
}
}

Nhưng đôi khi tôi nhận được ApplicationException. Bất cứ ai có thể giúp tôi nếu có bất kỳ vấn đề nào với mã của tôi và vui lòng giải thích khi ngoại lệ này được kích hoạt.

Phương thức đồng bộ hóa đối tượng được gọi từ khối mã không đồng bộ. Tôi nhận được điều này trong khối cuối cùng khi cố gắng giải phóng mutex.

câu trả lời hay nhất

Ngay cả khi WaitOne thất bại, bạn vẫn giải phóng mutex. Di chuyển lệnh gọi ReleaseMutex vào câu lệnh if nơi bạn biết mutex đã được mua.

Giới thiệu về c# - Tại sao ApplicationException lại bị ném? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/10402464/

25 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress