我覺(jué)得現(xiàn)有的解釋太過(guò)分了。以下是我用簡(jiǎn)單英語(yǔ)所作的解釋:
sta:如果一個(gè)線程創(chuàng)建一個(gè)設(shè)置為STA的COM對(duì)象(當(dāng)調(diào)用CoCreateXXX時(shí),您可以傳遞一個(gè)將COM對(duì)象設(shè)置為STA模式的標(biāo)志),那么只有這個(gè)線程才能訪問(wèn)這個(gè)COM對(duì)象(STA的意思是-單線程單元),其他試圖調(diào)用這個(gè)COM對(duì)象的線程就會(huì)被悄悄地轉(zhuǎn)換成將消息傳遞給創(chuàng)建(擁有)COM對(duì)象的線程。這非常類似于這樣一個(gè)事實(shí):只有創(chuàng)建UI控件的線程才能直接訪問(wèn)它。這種機(jī)制是為了防止復(fù)雜的鎖/解鎖操作。
MTA:如果一個(gè)線程創(chuàng)建一個(gè)被設(shè)置為MTA的COM對(duì)象,那么幾乎每個(gè)線程都可以直接調(diào)用它上的方法。
這幾乎就是它的要旨。雖然從技術(shù)上講,我沒(méi)有提到一些細(xì)節(jié),比如在‘STA’段落中,創(chuàng)建者線程本身必須是STA。但要理解STA/MTA/NA,這是你所要知道的。