2012-02-15 27 views
7

Tôi có một nhiệm vụ khâu hình ảnh mà có thể mất rất nhiều thời gian vì vậy tôi chạy nó như là một nhiệm vụ riêng biệt như thế nàyCách xử lý chuyển đổi mảng đồng biến thể?

var result = openFileDialog.ShowDialog(); 
BeginInvoke(new Action<string[]>(StitchTask), openFileDialog.FileNames); 

private void StitchTask(string[] fileNames) 
{ 
    // this task could take a lot of time 
} 

Tôi có cần phải lo lắng về cảnh báo chuyển đổi mảng đồng biến thể thấp hơn hoặc tôi đang làm Có gì đó không đúng?

Co-biến mảng chuyển đổi từ string [] phản đối [] có thể gây thời gian chạy ngoại lệ về hoạt động viết

+1

Điều gì mang lại cho bạn cảnh báo đó? Tôi không thấy bất cứ điều gì bằng cách sử dụng một 'đối tượng []' ... –

+0

ReSharper đang đưa ra cảnh báo. – jacknad

Trả lời

13

Got nó - vấn đề là bạn đang đi qua một string[] như thể nó là một mảng các đối số cho các đại biểu, khi bạn thực sự muốn nó như là một đối số đơn:

BeginInvoke(new Action<string[]>(StitchTask), 
      new object[] { openFileDialog.FileNames }); 

Dù đem lại cho bạn những cảnh báo được cảnh báo bạn về việc chuyển đổi tiềm ẩn của string[]-object[], đó là hợp lý vì một cái gì đó lấy một tham số object[]thể cố gắng viết:

array[0] = new object(); 

Trong trường hợp này đó không phải là vấn đề ... nhưng thực tế là nó sẽ cố gắng ánh xạ từng chuỗi thành thông số ủy nhiệm riêng biệt một sự cố.

Các vấn đề liên quan