2015-11-30 89 views
1

在UWP中,我如何訪問線程對象?我想更改主線程的名稱和我將管理的其他線程。在UWP/Windows 10 mobile中的System.Threading.Thread替換

我也想檢查當前的線程是否之後的主線程。

我針對的是Windows 10移動版。下面的代碼示例適用於桌面,但不適用於手機(獲取'System.DllNotFoundException'):

[DllImport("kernel32.dll")] 
static extern IntPtr GetCurrentThread(); 

謝謝。

回答

2

您應該使用任務而不是線程。 https://msdn.microsoft.com/en-us/library/system.threading.tasks.task%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

至於重命名線程,你能告訴我爲什麼你需要重命名主線程和其他線程!?

+0

是的,謝謝,我已經看到任務之前問這個問題。我的應用程序有一個常量工作線程。從我讀過的內容來看,任務僅用於單個異步操作。是否真的沒有辦法與線程工作? –

+0

任務不僅適用於單個異步操作。您可以使用任務作爲線程。實際上,任務下面是線程。所以只要嘗試從線程切換並使用任務。您可以啓動一項任務,稍後可以啓動其他任務。你不需要等到任務結束,只需啓動它就可以忘記,但是提供一些任務優雅地完成的機制。爲此,您可以使用任務取消令牌。 –

+2

Ray,看看這個博客: http://blog.slaks.net/2013-10-11/threads-vs-tasks/ 它聲明:「由於任務仍然在ThreadPool上運行,所以它們不應該是用於長時間運行的操作,因爲它們仍然可以填充線程池並阻止新工作,相反,Task提供了一個LongRunning選項,它將告訴TaskScheduler啓動一個新線程而不是在ThreadPool上運行。「最終,我需要一個能夠在應用程序生命週期中保持活力的線程。或許使用LongRunning選項創建任務是要走的路... –

0

在UWP中,您應該考慮使用Windows.System.Threading namespace中的類。但是,您會注意到有一個線程池,但沒有與Thread類直接等價的線程池。

請記住,UWP不允許你創建一個線程並讓它永遠運行的原因是有原因的。這會使電池耗盡,但它也會阻礙應用程序的使用。

UWP有許多機制,允許您使用專用線程來解決其他平臺上的各種問題。也許如果你告訴我們爲什麼你認爲你需要一個線程,我們可以幫助你解決你的實際問題?

1

我們已經在長度的博客上講述這個(因爲我們認爲這是分裂的不受歡迎開始.NET Standard),併發布了UWP/UAP 10,available on GitHubvia NuGet的開源實現。

我希望這會有所幫助。

+0

的相關性,不幸的是,一個不包含ThreadPool(使用DedicatedThreadPool而是使用一些小的更改) –

相關問題