ID do artigo: 935218 - Última revisão: quinta-feira, 4 de outubro de 2007 - Revisão: 2.8

Kit de treinamento Self-Paced MCTS (exame 70-536): Microsoft ® .NET Framework 2.0 ? Application Development Foundation comentários e correções parte 2

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Este artigo contém comentários, correções e informações sobre erros conhecidos relacionados ao livro da Microsoft Press MCTS Paced Training Kit (exame 70-536): Microsoft ® .NET Framework 2.0 ? Application Development Foundation , 0-7356-2277-9.Correções adicionais para esse catálogo estão disponíveis no artigo 923018 (http://support.microsoft.com/kb/923018/) , 949730 (http://support.microsoft.com/kb/949730/) e 949734 (http://support.microsoft.com/kb/949734/) .

Os seguintes tópicos são abordados:

  • 200 Página: A resposta B para a pergunta 2 é imprecisa
  • Página 204: Descrição do código de exemplo está incorreta
  • Página 209: DictionaryEntry conhecido como DictionaryEntries
  • Página 210: Colchetes usado incorretamente no exemplo de código VB
  • 213 De página: Método incorreto usado para oferecer suporte a classe
  • Página 213: Propriedade Values conhecido como a propriedade Value
  • Página 214: Exemplo de código comentário ausente
  • Página 215: Exemplo de código contém um erro de sintaxe
  • 216 De página: Descrição incorreta da funcionalidade de tabela de hash
  • 227 De página: VB incorreta código usado no exemplo BitArray
  • Página 228: Translation from VPE for Csharp incorreta código usado no exemplo BitArray
  • Página 228: Quatro bits referenciados no lugar de três bits
  • Página 230: Bits chamado de bytes
  • Página 230: Sem sinal deve ser assinado
  • Página 232: 98314 deve ser 196634 e 00000000000000011000000000001010 deve ser 00000000000000110000000000011010
  • Página 234: CollectionsUtil conhecido como CollectionUtil
  • Página 235: CollectionsUtil conhecido como CollectionUtil
  • Página 235: Seqüência incorreta usada no exemplo de código VB e translation from VPE for Csharp
  • Página 237: "++ x"devem ser"x ++"
  • Página 238: Uso incorreto do nome da classe ListCollection na etapa 3
  • Página 239: CollectionsUtil conhecido como CollectionUtil
  • Página 246: KeyValuePair conhecido como NameValuePair
  • Página 249: Classe conhecido como objeto
  • Página 249: ReverseIntComparison deve ser AddressOf ReverseIntComparison
  • Página 250: Dicionário conhecido como uma fila
  • Página 250: Primeira linha do exemplo de código VB incorreto
  • Página 254: KeyValuePair conhecido como NameValuePair
  • Página 258: ReadOnlyCollectionBase classe chamada como ReadOnlyCollection base
  • Página 259: O termo "abreviações de estado" usados no lugar de "códigos de chamada"
  • Página 263: Texto incorreto caso cenário 1, pergunta 2
  • Páginas 280, 281: "XML" usado no lugar de "SOAP"
  • Página 286: SoapFormatter ausente
  • Página 287: serializado usada no lugar de desserializado
  • Página 292: Ausente linha quantidade no código de exemplo
  • Página 301: O XML deve ser XML
  • Página 305: OnDeserialized deve ser OnDeserializing
  • Página 306: OnDeserializing deve ser OnDeserialized
  • Página 343: Image.FromFile shoudl ser novo bitmap
  • Página 370: ThreadState.WaitJoinSleep referenciado no lugar do ThreadState.WaitSleepJoin
  • Página 373: Thread referenciado no lugar de valor
  • Correção de página 373: Nome de método e saída frase
  • Página 377: Delegado ThreadStart referenciado como StartThread
  • 378 De página: Quebra de linha no exemplo de código
  • 378 De página: Código incorreto no exemplo de código translation from VPE for Csharp declaração
  • Página 380: Domínio referenciado no lugar de estado
  • Página 383: Incluir instrução referenciada no lugar de usando instrução
  • Página 383: StartThread referenciado no lugar do ThreadStart
  • Página 387: Travamento classe mencionada no lugar da classe Interlocked
  • Página 389: Leitura da memória conhecido como ler na memória
  • Página 390: AddCount método referenciado no lugar do método UpdateCount
  • Página 394: Exemplo de código translation from VPE for Csharp está incorreto
  • Página 396: Thread.Sleep método necessário no exemplo de código
  • Página 397: AddressOf faltando do exemplo de código
  • Página 407: EventWaitHandles referenciado no lugar do EventWaitHandle
  • Página 410: Travamento classe mencionada no lugar da classe Interlocked
  • Página 414: Bytes gravados referenciado no lugar de bytes lidos
  • Página 415: strm.Read método não necessário
  • Página 417: AddressOf faltando do exemplo de código
  • Página 419: Eventos referenciado no lugar de classe
  • Página 421: QueueWorkItem referenciado no lugar do QueueUserWorkItem
  • Página 421: Parêntese de fechamento extra incluído no exemplo de código
  • Página 424: RegisterWaitHandle referenciado no lugar do RegisterWaitForSingleObject
  • 429 De página: Comportamento de execução de thread misrepresented
  • Página 432: Cenário caso tópicos misrepresented
  • Página 438: Explicação de processo do operador ASP.NET incorreto
  • Página 454: Exemplos de código VB e translation from VPE for Csharp contêm uma linha de código desnecessária
  • Página 456: Resposta D de pergunta 3 parcialmente incorreto
  • Páginas 481-482: título incorreto na tabela
  • Página 483: Configuração deve ser ConfigurationManager
  • Página 490: Exemplo de código incorreta

Mais Informações

200 Página: A resposta B para a pergunta 2 é imprecisa

Na página 200, responda B leituras:

"Para testar se os dois objetos estão a referência mesma de um objeto"

Ele deve ler:

"Para testar se duas variáveis estão fazendo referência o mesmo objeto"

Página 204: Descrição do código de exemplo está incorreta

Na página 204, lê a última sentença antes do primeiro exemplo de código:

"Quando você tiver uma instância da classe, você use o método Push para adicionar itens à fila e o método dequeue para remover itens da lista, como mostrado nesse pequeno exemplo:"

Ele deve ler:

"Quando você tiver uma instância da classe, você use o método Push para adicionar itens na pilha e o método POP para remover itens da pilha, como mostrado nesse pequeno exemplo:"

Página 209: DictionaryEntry conhecido como DictionaryEntries

Na página 209, lê o quarto ponto de marcador:

"Enumerar dicionários e saber como usar DictionaryEntries."

Ele deve ler:

"Enumerar dicionários e saber como usar DictionaryEntry."

Página 210: Colchetes usado incorretamente no exemplo de código VB

Na página 210, o exemplo de código VB sob o segundo parágrafo lê:

' VB
Console.WriteLine(emailLookup["sbishop@contoso.com"])

Ele deve ler:

' VB
Console.WriteLine(emailLookup("sbishop@contoso.com"))


213 De página: Método incorreto usado para oferecer suporte a classe

Na página 213, na quarta do primeiro parágrafo em "Understanding igualdade" frase:

"Essa classe suporta o método GetHash, que retorna um inteiro que identifica exclusivamente o objeto."

Ele deve ler:

"Essa classe suporta o método GetHashCode, que retorna um inteiro que identifica exclusivamente o objeto."

Página 213: Propriedade Values conhecido como a propriedade Value

Na página 213, a última frase:

"Você também pode iterar sobre esses valores por iteração a propriedade Value em vez disso, como visto neste exemplo:"

Ele deve ler:

"Também pôde iterar sobre esses valores por iteração através da propriedade valores em vez disso, como visto neste exemplo:"

Página 214: Exemplo de código comentário ausente

Na página 214, no segundo exemplo de código VB linha de código 6ª está faltando um comentário.

Alteração:
Console.WriteLine(duplicates.Count)

Para:
Console.WriteLine(duplicates.Count) ' 2

Página 215: Exemplo de código contém um erro de sintaxe

Na página 215, linha 2 do segundo exemplo de código VB contém um erro de sintaxe.

Alteração:
Dim otherFish as Fish = obj As Fish

Para:
Dim otherFish as Fish = TryCast(obj, Fish)

216 De página: Descrição incorreta da funcionalidade de tabela de hash

Na página 216, lê a segunda frase na página:

"Essa situação é aí que entra capacidade ?s Hashtable de fornecer uma classe que calcula igualdade."

Ele deve ler:

"Essa situação é aí que entra capacidade ?s Hashtable de usar uma classe que calcula igualdade."

Página 216: Interfaces conhecido como classes

Na página 216, leia as duas primeiras frases do segundo parágrafo:

"A classe Hashtable oferece suporte um construtor que pode aceitar uma instância da classe IEqualityComparer como um argumento. Muito como a classe IComparer mostrada na lição 1 permitia a você classificar coleções, a interface IEqualityComparer suporta dois métodos: GetHashCode e Equals. "

Leia:

"A classe Hashtable oferece suporte um construtor que pode aceitar uma instância da interface IEqualityComparer como um argumento. Muito como a interface de IComparer mostrada na lição 1 permitia a você classificar coleções, a interface IEqualityComparer suporta dois métodos: GetHashCode e Equals. "

227 De página: VB incorreta código usado no exemplo BitArray

Na página 227, lê a segunda parte do código VB na etapa 4:

Dim moreBits As BitArray = New BitArray(3)
bits(0) = True
bits(1) = True
bits(2) = False

Ele deve ler:

Dim moreBits As BitArray = New BitArray(3)
moreBits(0) = True
moreBits(1) = True
moreBits(2) = False


Página 228: Translation from VPE for Csharp incorreta código usado no exemplo BitArray

Na página 228: exemplo de código translation from VPE for Csharp na parte superior de leituras de página:

Dim moreBits = New BitArray(3)
bits[0] = True
bits[1] = True
bits[2] = False

Ele deve ler:

Dim moreBits = New BitArray(3)
moreBits[0] = True
moreBits[1] = True
moreBits[2] = False


Página 228: Quatro bits referenciados no lugar de três bits

Na página 228, a segunda frase do terceiro parágrafo de como fazer um BitVector32 para seção máscaras de bit lê:

"Suponha que você precise definir o valor dos primeiros quatro bits em alguns inteiro de 32 bits".

Ele deve ler:

"Suponha que você precise definir o valor dos três primeiros bits em alguns inteiro de 32 bits".

Lê a primeira sentença da etapa 4 da seção:

"Repita as etapas de 1 a 3 até que você tenha máscaras de bits de quatro".

Ele deve ler:

"Repita as etapas de 1 a 3 até que você tenha máscaras de bits três".

Página 230: Bits chamado de bytes

Na página 230, a oitava do segundo parágrafo na seção Noções básicas sobre binário matemática frase:

"Para que se um byte não atribuído tem todos os bytes de 8 preenchidos, ele pode ser representado por esta equação: 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255."

Ele deve ler:

"Para que se um byte não atribuído tiver todos os 8 bits preenchidos, ele também pode ser representado por esta equação: 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255."

Página 230: Sem sinal deve ser assinado

Na página 230, a frase quarta do último parágrafo na seção matemática binária Noções básicas sobre se refere a um inteiro sem sinal, em vez de um inteiro.

Alteração:
"Piorar mais importa mais é o fato de que o BitVector32 realmente funciona com um número inteiro não assinado, portanto, o último dígito é realmente ?(2^31), que lida com o intervalo negativo de um inteiro de 32 bits assinado."

Para:
"Piorar mais importa mais é o fato de que o BitVector32 realmente funciona com um inteiro, portanto, o último dígito é realmente ?(2^31), que lida com o intervalo negativo de um inteiro de 32 bits assinado."

Página 232: 98314 deve ser 196634 e 00000000000000011000000000001010 deve ser 00000000000000110000000000011010

Na página 232, o valor da variável BitVector32 está incorreto.

Alteração:
"
' VB
Console.WriteLine(packedBits.Data)
' 98314
Console.WriteLine(packedBits)
' BitVector32{00000000000000011000000000001010}
// C#
Console.WriteLine(packedBits.Data);
// 98314
Console.WriteLine(packedBits);
// BitVector32{00000000000000011000000000001010}

Você pode fazer o cálculo para descobrir que o número 98314 pode armazenar 192, 1 e 10, mas o BitVector32 pode fazê-lo para você com muito menos trabalho."

Para:
"
' VB
Console.WriteLine(packedBits.Data)
' 196634

Console.WriteLine(packedBits)
' BitVector32{00000000000000110000000000011010}

// C#
Console.WriteLine(packedBits.Data);
// 196634

Console.WriteLine(packedBits);
// BitVector32{00000000000000110000000000011010}

Você pode fazer o cálculo para descobrir que o número 196634 pode armazenar 192, 1 e 10, mas o BitVector32 pode fazê-lo para você com muito menos trabalho."

Página 234: CollectionsUtil conhecido como CollectionUtil

Na página 234, a terceira seção Case-insensitive coleções frase:

"Como isso é um uso comum, o .NET Framework tem uma classe CollectionUtil que ofereça suporte a criar objetos de tabela de hash e SortedList que diferenciam maiúsculas de minúsculas."

Ele deve ler:

"Como isso é um uso comum, o .NET Framework tem uma classe CollectionsUtil que ofereça suporte a criar objetos de tabela de hash e SortedList que diferenciam maiúsculas de minúsculas."

Página 235: CollectionsUtil conhecido como CollectionUtil

Na página 235, o sexto do segundo parágrafo, frase:

"Ao contrário das coleções não diferencia maiúsculas de minúsculas, CollectionUtil métodos não podem ser usados para criar seus conjuntos."

Ele deve ler:

"Ao contrário das coleções não diferencia maiúsculas de minúsculas, CollectionsUtil métodos não podem ser usados para criar seus conjuntos."

Página 235: Seqüência incorreta usada no exemplo de código VB e translation from VPE for Csharp

Na página 235, no exemplo de código VB e translation from VPE for Csharp ele lê:

' VB
Dim hash As Hashtable = New Hashtable( _
StringComparer.InvariantCulture)
Dim list As SortedList = New SortedList( _
StringComparer.InvariantCulture)

// C#
Hashtable hash = new Hashtable(
StringComparer.InvariantCulture);
SortedList list = new SortedList(
StringComparer.InvariantCulture);

Ele deve ler:

' VB
Dim hash As Hashtable = New Hashtable( _
StringComparer.InvariantCulture)
Dim list As SortedList = New SortedList( _
StringComparer.InvariantCultureIgnoreCase)

// C#
Hashtable hash = new Hashtable(
StringComparer.InvariantCulture);
SortedList list = new SortedList(
StringComparer.InvariantCultureIgnoreCase);


Página 237: "++ x"devem ser"x ++"

Na página 237, a quinta linha da última amostra de código translation from VPE for Csharp é incorreta.

Alteração:
for (int x = 0; x < nv.Count; ++x)

Para:
for (int x = 0; x < nv.Count; x++)

Página 238: Uso incorreto do nome da classe ListCollection na etapa 3

Na página 238, lê etapa 3:

"No método Main do projeto, criar uma nova instância da ListCollection classe, especificando não fazem distinção entre maiúsculas e minúsculas e cultura invariável."

Ele deve ler:

"No método Main do projeto, criar uma nova instância da ListDictionary classe, especificando não fazem distinção entre maiúsculas e minúsculas e cultura invariável."

Página 239: CollectionsUtil conhecido como CollectionUtil

Na página 239, lê o terceiro ponto de marcador:

"Você pode criar versões não diferencia maiúsculas de minúsculas dos objetos Hashtable e SortedList usando a classe CollectionUtil."

Ele deve ler:

"Você pode criar versões não diferencia maiúsculas de minúsculas dos objetos Hashtable e SortedList usando a classe CollectionsUtil."

Página 246: KeyValuePair conhecido como NameValuePair

Na página 246, lê a última entrada na tabela 4 a 20 página:

"DictionaryEntry NameValuePair <>"

Ele deve ler:

"DictionaryEntry KeyValuePair <>"

Página 249: Classe conhecido como objeto

Na página 249, a frase após o primeiro código exemplo lê:

"Essa abordagem é muito mais fácil de escrever um objeto comparação inteiro para comparações usados raramente."

Ele deve ler:

"Essa abordagem é muito mais fácil de escrever uma classe de comparação inteira para comparações usados raramente."

Página 249: ReverseIntComparison deve ser AddressOf ReverseIntComparison

Página 249, o primeiro exemplo de código VB é incorreto.

Alteração:
' VB
intList.Sort(ReverseIntComparison)

Para:
' VB
intList.Sort(AddressOf ReverseIntComparison)


Página 250: Dicionário conhecido como uma fila

Na página 250, lê a quarta sentença da seção de classe de dicionário genérico:

"Para usar um tipo de fila genérico, você pode seguir estas etapas:"

Ele deve ler:

"Para usar um tipo de dicionário genérico, você pode seguir estas etapas:"

Página 250: Primeira linha do exemplo de código VB incorreto

Na página 250, lê a primeira linha do exemplo de código VB:

Dictionary(Of Integer, String) dict = new Dictionary(Of Integer, String)() 
dict(3) = "Three" 
dict(4) = "Four" 
dict(1) = "One" 
dict(2) = "Two" 
Dim str as String = dict(3)

Ele deve ler:

Dim dict = New Dictionary(Of Integer, String)() 
dict(3) = "Three" 
dict(4) = "Four" 
dict(1) = "One" 
dict(2) = "Two" 
Dim str As String = dict(3)


Página 254: KeyValuePair conhecido como NameValuePair

Na página 254, a segunda frase do parágrafo seguinte tabela 4-23 lê:

"Esse comportamento é diferente o tipo de dicionário genérico, onde o enumerador retorna um objeto genérico NameValuePair."

Ele deve ler:

"Esse comportamento é diferente o tipo de dicionário genérico, onde o enumerador retorna um objeto genérico KeyValuePair."

Página 258: ReadOnlyCollectionBase classe chamada como ReadOnlyCollection base

Na página 258, lê a primeira sentença do quinto parágrafo na seção de texto o próprio coleções:

"Diferentemente as classes base CollectionBase e ReadOnlyCollection, o DictionaryBase implementa as interfaces IDictionary, IEnumerable e ICollection."

Ele deve ler:

"Diferentemente das classes CollectionBase e ReadOnlyCollectionBase, o DictionaryBase implementa as interfaces IDictionary, IEnumerable e ICollection."

Página 259: O termo "abreviações de estado" usados no lugar de "códigos de chamada"

Na página 259, lê a primeira frase no Exercício 1:

"Neste exercício, você cria um dicionário genérico para conter abreviações de estado com seus nomes completos."

Ele deve ler:

"Neste exercício, você cria um dicionário genérico para armazenar códigos de chamada com seus nomes completos."

Páginas 280, 281: "XML" usado no lugar de "SOAP"

Em páginas 280 e 281, lê o título da tabela 5-1:

"Atributos de serialização XML"

Ele deve ler:

"Atributos de serialização SOAP"

Página 286: SoapFormatter ausente

Na página 286, resposta A pergunta 1 omite uma referência para SoapFormatter.

Alteração:
"R. uma instância de BinaryFormatter"

Para:
"R. uma instância de BinaryFormatter ou SoapFormatter"

Página 287: serializado usada no lugar de desserializado

Na página 287, pergunta 4 lê:

"Qual das seguintes interfaces deve implementar para permitir que você executar um método após uma instância de sua classe for serializada?"

Ele deve ler:

"Qual das seguintes interfaces deve implementar para permitir que você executar um método após uma instância de sua classe é desserializada?"

Página 292: Ausente linha quantidade no código de exemplo

Na página 292, lê o código de exemplo para serializar uma classe no meio da página:

<?xml version="1.0" ?>
<ShoppingCartItem>
  <productId>100</productId>
  <price>10.25</price>
  <total>20.50</total>
</ShoppingCartItem>

Ele deve ler:

<?xml version="1.0" ?>
<ShoppingCartItem>
  <productId>100</productId>
  <price>10.25</price>
  <total>20.50</total>
  <quantity>2</quantity>
</ShoppingCartItem>


Página 301: O XML deve ser XML

Na página 301, revisão seis pergunta respostas usar XML em vez de XML.

Nas respostas a pergunta 2, altere:
"B. XMLType
XMLElement C.
D. XMLAttribute"

Para:
"B. XmlType
XmlElement C.
XmlAttribute D."

Nas respostas à pergunta 4, altere:
"R. XMLType
B. XMLIgnore
XMLElement C.
D. XMLAttribute"

Para:
"R. XmlType
B. XmlIgnore
XmlElement C.
XmlAttribute D."

Página 305: OnDeserialized deve ser OnDeserializing

Na página 305, a última frase faz referência OnDeserialized em vez de OnDeserializing.

Alteração:
"Aplicar o atributo OnDeserialized para o método deve ser executado durante este evento".

Para:
"Aplicar o atributo OnDeserializing para o método deve ser executado durante este evento".

Página 306: OnDeserializing deve ser OnDeserialized

Na página 306, faz referência a última sentença da seção Deserialized OnDeserializing em vez de OnDeserialized.

Alteração:
"Aplicar o atributo OnDeserializing para o método deve ser executado durante este evento".

Para:
"Aplicar o atributo OnDeserialized para o método deve ser executado durante este evento".

Página 343: Image.FromFile shoudl ser novo bitmap

Na página 343, o segundo exemplo de código VB usa Image.FromFile em vez de novo bitmap.

Alteração:
"Dim B como bitmap = Image.FromFile ("C:\windows\gone fishing.bmp")"

Para:
"Dim B como bitmap = novo bitmap ("C:\windows\gone fishing.bmp")"

Página 370: ThreadState.WaitJoinSleep referenciado no lugar do ThreadState.WaitSleepJoin

Na página 370, lê a descrição de interrupção na tabela 7-2:

"Gera um ThreadInterruptedException quando um thread estiver em um estado bloqueado (ThreadState.WaitJoinSleep). Se o thread nunca bloqueia, a interrupção nunca acontecerá."

Ele deve ler:

"Gera um ThreadInterruptedException quando um thread estiver em um estado bloqueado (ThreadState.WaitSleepJoin). Se o thread nunca bloqueia, a interrupção nunca acontecerá."

Página 373: Thread referenciado no lugar de valor

Na página 373, lê a última frase do primeiro parágrafo:

"Depois por, usaremos esse thread para ver o trabalho está sendo feito no qual thread."

Ele deve ler:

"Depois por, usaremos esse valor para ver o trabalho está sendo feito no qual thread."

Correção de página 373: Nome de método e saída frase

Na página 373, lê a primeira e segunda frase do parágrafo abaixo o primeiro conjunto de exemplos de código:

"Quando o método Start é chamado, o método SomeWork é chamado em um novo thread e o segmento executa até que o método seja concluída. Neste exemplo, nosso método SimpleWork grava a frase "Em thread" e mostra a propriedade ManagedThreadId."

Ele deve ler:

"Quando o método Start é chamado, o método SimpleWork é chamado em um novo thread e o segmento executa até que o método seja concluída. Neste exemplo, nosso método SimpleWork grava a frase "Thread #" e mostra a propriedade ManagedThreadId."

Página 377: Delegado ThreadStart referenciado como StartThread

Na página 377, leia as primeiro três frases dos dados de passar a seção de threads:

"Em cada um dos exemplos anteriores, nós estava usando o delegado StartThread, que usa sem parâmetros. A maioria dos uso do mundo real de threading, será necessário passar informações para segmentos individuais. Para fazer isso, você precisará usar um novo delegado chamado ParameterizedStartThread."

Leia:

"Em cada um dos exemplos anteriores, estava usando o delegado ThreadStart, que usa sem parâmetros. A maioria dos uso do mundo real de threading, será necessário passar informações para segmentos individuais. Para fazer isso, você precisará usar um novo delegado chamado ParameterizedThreadStart."

378 De página: Quebra de linha no exemplo de código

Na página 378, lê a primeira linha do exemplo de código:

' VB ParameterizedThreadStart operation = _

Ele deve ler:

' VB 
ParameterizedThreadStart operation = _


378 De página: Código incorreto no exemplo de código translation from VPE for Csharp declaração

Na página 378, o exemplo de código translation from VPE for Csharp lê:

string info = o as string;
if (info == null)
{
throw InvalidProgramException("Parameter for thread must be a string");
}

Ele deve ler:

string info = o as string;
if (info == null)
{
throw new InvalidProgramException("Parameter for thread must be a string");
}


Página 380: Domínio referenciado no lugar de estado

Na página 380, lê a primeira frase na página:

"Para resolver o problema de deixando objetos ou o AppDomain em um domínio inconsistente, a classe thread tem dois métodos estáticos importantes: BeginCriticalRegion e EndCriticalRegion."

Ele deve ler:

"Para resolver o problema de deixando objetos ou o AppDomain em um estado inconsistente, a classe thread tem dois métodos estáticos importantes: BeginCriticalRegion e EndCriticalRegion."

Página 383: Incluir instrução referenciada no lugar de usando instrução

Na página 383, lê a etapa 3:

"Na nova classe, adicionar uma instrução de inclusão (ou a declaração Imports para o Visual Basic) para o namespace System.Threading."

Ele deve ler:

"Na nova classe, adicionar um usando instrução (ou a declaração Imports para o Visual Basic) para o namespace System.Threading."

Página 383: StartThread referenciado no lugar do ThreadStart

Na página 383, etapa 7 lê:

"Vá para o método Main e criar um novo delegado StartThread que aponta para o método de contagem."

Ele deve ler:

"Vá para o método Main e criar um novo delegado ThreadStart que aponta para o método de contagem."

Página 387: Travamento classe mencionada no lugar da classe Interlocked

Na página 387, lê o primeiro ponto de marcador:

"Usar a classe Entrefecho para executar operações atômicas."

Ele deve ler:

"Usar a classe Interlocked para executar operações atômicas."

Página 389: Leitura da memória conhecido como ler na memória

Na página 389, a segunda frase do parágrafo anterior Figura 7-2 lê:

"Como mostrado na Figura 7-2, dois threads foi cada ler os valores na memória e atualizá-los com o mesmo valor atualizado."

Ele deve ler:

"Como mostrado na Figura 7-2, dois threads foi cada ler os valores da memória e ao mesmo tempo atualizá-los com o mesmo valor atualizado."

Página 390: AddCount método referenciado no lugar do método UpdateCount

Na página 390, lê a primeira frase após a tabela 7-7:

"Podemos alterar nosso método AddCount usar a classe Interlocked para solucionar o problema threading assim:"

Ele deve ler:

"Podemos alterar nosso método UpdateCount usar a classe Interlocked para solucionar o problema threading assim:"

Página 394: Exemplo de código translation from VPE for Csharp está incorreto

Na página 394, o exemplo de código translation from VPE for Csharp bloqueia incorretamente em uma instância pública onde ele deve ser particular, ele também usa um operador incorreto na variável _evenCount.

Alteração:
// C#
public void UpdateCount()
{
     lock (this)
     {
          _count = _count + 1;
          if (Count % 2 == 0) // An even number
          {
               _evenCount = _evenCount + 1;
          }
     }
}

Para:
//C#
private Object theLock = new Object();

public void UpdateCount()
   {
         lock (theLock)
         {
            _count = _count + 1;
           if (Count % 2 == 0) // An even number
          {
               _evenCount += 1;
          }
     }
}

Página 396: Thread.Sleep método necessário no exemplo de código

Na página 396, o exemplo de código translation from VPE for Csharp está faltando o método thread.Sleep.

Alteração:
class Deadlocker
{
	object ResourceA = new Object();
	object ResourceB = new Object();
	public void First()
	{
		lock (ResourceA)
		{
			lock (ResourceB)
			{
				Console.WriteLine("First");
			}
		}
	}
	public void Second()
	{
		lock (ResourceB)
		{
			lock (ResourceA)
			{
				Console.WriteLine("Second");
			}
		}
	}
}

Para: classe
class Deadlocker
{
	object ResourceA = new Object();
	object ResourceB = new Object();
	public void First()
	{
		lock (ResourceA)
		{
			//Added sleep to give enough time for B to launch before A finished.  So deadlock works.
			Thread.Sleep(10);
			lock (ResourceB)
			{
				Console.WriteLine("First");
			}
		}
	}
	public void Second()
	{
		lock (ResourceB)
		{
			//Added sleep to give enough time for A to launch before B finished.  So deadlock works.
			Thread.Sleep(10);
			lock (ResourceA)
			{
				Console.WriteLine("Second");
			}
		}
	}
}

Página 397: AddressOf faltando do exemplo de código

Na página 397, as terceira e quarta linhas de exemplo de código Visual Basic estão incorretas.

Alteração:
Dim firstStart As New ThreadStart(deadlock.First)
Dim secondStart As New ThreadStart(deadlock.Second)

Para:
Dim firstStart As New ThreadStart(AddressOf deadlock.First)
Dim secondStart As New ThreadStart(AddressOf deadlock.Second)

Página 407: EventWaitHandles referenciado no lugar do EventWaitHandle

Na página 407, lê a terceira frase do parágrafo final:

"Ao criar ou abrir um evento nomeado, você precisará lidar com EventWaitHandles em vez das classes ManualResetEvent e AutoResetEvent."

Ele deve ler:

"Ao criar ou abrir um evento nomeado, você precisará lidar com EventWaitHandle em vez das classes ManualResetEvent e AutoResetEvent."

Página 410: Travamento classe mencionada no lugar da classe Interlocked

Na página 410, lê o primeiro ponto de marcador:

"Para executar operações matemáticas atômica, use a classe Entrefecho."

Ele deve ler:

"Para executar operações matemáticas atômica, use a classe Interlocked."

Página 414: Bytes gravados referenciado no lugar de bytes lidos

Na página 414, lê a primeira frase do primeiro parágrafo:

"As diferenças incluem que ele retorna um IAsyncResult em vez do número de bytes gravados e que dois parâmetros são adicionados à assinatura do método para oferecer suporte a APM."

Ele deve ler:

"As diferenças incluem que ele retorna um IAsyncResult em vez do número de bytes lidos e que dois parâmetros são adicionados à assinatura do método para oferecer suporte a APM."

Lê a primeira frase o segundo exemplo de código a seguir:

"No final da operação, você chamará o EndRead com o objeto IAsyncResult e ele retornará bytes gravados."

Ele deve ler:

"No final da operação, você chamará o EndRead com o objeto IAsyncResult e retornará que os bytes lidos".

Página 415: strm.Read método não necessário

Na página 415, a primeira linha de código translation from VPE for Csharp exemplo sob a "/ / fazer a chamada assíncrona" comentário não é necessário.

Remova a seguinte linha de código:
strm.Read(buffer, 0, buffer.Length);

Página 417: AddressOf faltando do exemplo de código

Na página 417, a linha 10 no exemplo de código VB faltam AddressOf.

Alteração:
New AsyncCallBack(CompleteRead), strm)

Para:
New AsyncCallBack(AddressOf CompleteRead), strm)

Página 419: Eventos referenciado no lugar de classe

Na página 419, a terceira frase na caixa de Windows Forms Application Exception Handling lê:

"Você fazer isso registrando-se para o evento ThreadException no evento de aplicativo".

Ele deve ler:

"Você fazer isso registrando-se para o evento ThreadException na classe de aplicativo".

Página 421: QueueWorkItem referenciado no lugar do QueueUserWorkItem

Na página 421, lê a primeira frase na página:

"Em vez de criar um novo thread e controlar a ele, podemos usar o ThreadPool para fazer esse trabalho usando o método QueueWorkItem:"

Ele deve ler:

"Em vez de criar um novo thread e controlar a ele, podemos usar o ThreadPool para fazer esse trabalho usando seu método QueueUserWorkItem:"

Página 421: Parêntese de fechamento extra incluído no exemplo de código

Na página 421, lê o segundo exemplo de código:

' VB
Dim workItem As New WaitCallback(WorkWithParameter))
If Not ThreadPool.QueueUserWorkItem(workItem,"ThreadPooled") Then
	Console.WriteLine("Could not queue item")
End If

// C#
WaitCallback workItem = new WaitCallback(WorkWithParameter));
if (!ThreadPool.QueueUserWorkItem(workItem, "ThreadPooled"))
{
	Console.WriteLine("Could not queue item");
}

Ele deve ler:

' VB
Dim workItem As New WaitCallback(WorkWithParameter)
If Not ThreadPool.QueueUserWorkItem(workItem,"ThreadPooled") Then
	Console.WriteLine("Could not queue item")
End If

// C#
WaitCallback workItem = new WaitCallback(WorkWithParameter);
if (!ThreadPool.QueueUserWorkItem(workItem, "ThreadPooled"))
{
	Console.WriteLine("Could not queue item");
}


Página 424: RegisterWaitHandle referenciado no lugar do RegisterWaitForSingleObject

Na página 424, a terceira frase do ThreadPool e WaitHandle seção Leituras:

"Isso é feito chamando ThreadPool.RegisterWaitHandle, conforme o exemplo a seguir:"

Ele deve ler:

"Isso é feito chamando ThreadPool.RegisterWaitForSingleObject, conforme o exemplo a seguir:"

429 De página: Comportamento de execução de thread misrepresented

Na página 429, lê a última sentença da etapa 8:

"Observe que alguns dos itens de trabalho são executados em threads diferentes".

Ele deve ler:

"Observe que alguns dos itens de trabalho podem ser executado em threads diferentes".

Página 432: Cenário caso tópicos misrepresented

Na página 432, lê a primeira sentença da seção de cenário caso:

"Nas seguintes situações casos, você irá aplicar o aprendeu sobre como usar domínios de aplicativos e serviços".

Ele deve ler:

"Nas seguintes situações casos, você aplicará o aprendeu sobre os tópicos deste capítulo."

Página 438: Explicação de processo do operador ASP.NET incorreto

Na página 438, a segunda frase do primeiro parágrafo contém inconsistências com o ASP.NET.

Alteração:
"Se 10 pessoas visitar um site da Web ASP.NET simultaneamente, ASP.NET irá criar um domínio de aplicativo separado para cada usuário."

Para:
"Em um processo do operador ASP.NET haverá um domínio de aplicativo por site. Usuários do mesmo site da web serão todos executado no contexto do mesmo domínio de aplicativo."

Página 454: Exemplos de código VB e translation from VPE for Csharp contêm uma linha de código desnecessária

Na página 454, na etapa 3 a segunda linha do código VB e translation from VPE for Csharp é redundante e deve ser removida.

Remover do código VB:
Dim safeZone As Zone = New Zone(SecurityZone.Internet)

Remover do código translation from VPE for Csharp:
Zone safeZone = new Zone(SecurityZone.Internet);

Página 456: Resposta D de pergunta 3 parcialmente incorreto

Na página 456, D de resposta da pergunta 3 lê:

"Criar uma instância da classe AppDomainSetup e, em seguida, defina a propriedade de aplicativo base. Passar o objeto AppDomainSetup para o construtor de AppDomain."

Ele deve ler:

"Criar uma instância da classe AppDomainSetup e em seguida, defina a propriedade Application-base."

Páginas 481-482: título incorreto na tabela

Em páginas 481 e 482 lê o título da tabela 9-1:

"ConfigurationManager propriedades e métodos"

Ele deve ler:

"Configuração de propriedades e métodos"

Página 483: Configuração deve ser ConfigurationManager

Na página 483, o título da tabela 9-2 é incorreto.

Alteração:
"Métodos e propriedades de configuração de tabela 9-2"

Para:
"Tabela 9-2 ConfigurationManager propriedades e métodos"

Página 490: Exemplo de código incorreta

Na página 490, thecode exemplos estão incorretos.

Alteração:
'VB
Dim AllAppSettings As NameValueCollection = _
	ConfigurationManager.AppSettings
Dim SettingsEnumerator As IEnumerator = AllAppSettings.Keys.GetEnumerator
Dim Counter As Int32 = 0
While SettingsEnumerator.MoveNext
	Console.WriteLine("Item: {0} Value: {1}", _
	AllAppSettings.Keys(Counter), AllAppSettings(Counter))
End While

// C#
NameValueCollection AllAppSettings =
	ConfigurationManager.AppSettings;
Int32 Counter = 0;
IEnumerator SettingsEnumerator = AllAppSettings.Keys.GetEnumerator();
while (SettingsEnumerator.MoveNext())
	{
	Console.WriteLine("Item: {0} Value: {1}", AllAppSettings.Keys[Counter],
	AllAppSettings[Counter]);
	}

Para:
'VB
Dim AllAppSettings As NameValueCollection = _
	ConfigurationManager.AppSettings
Dim SettingsEnumerator As IEnumerator = AllAppSettings.Keys.GetEnumerator
Dim Counter As Int32 = 0
While SettingsEnumerator.MoveNext
	Console.WriteLine("Item: {0} Value: {1}", _
	SettingsEnumerator.Current, AllAppSettings(SettingsEnumerator.Current))
End While

// C#
NameValueCollection AllAppSettings =
	ConfigurationManager.AppSettings;
IEnumerator SettingsEnumerator = AllAppSettings.Keys.GetEnumerator();
while (SettingsEnumerator.MoveNext())
	{
	Console.WriteLine("Item: {0}  Value: {1}", SettingsEnumerator.Current, 
	AllAppSettings[(string)SettingsEnumerator.Current]);
	}

Microsoft Press está comprometida em fornecer livros informativos e precisos. Todos os comentários e as correções listadas acima estão prontas para inclusão em impressões em futuras deste livro. Se você tiver um impressão mais recente deste livro, ele já pode conter a maioria ou todas as correções acima.

A informação contida neste artigo aplica-se a:
  • MCTS Self-Paced Training Kit (Exam 70-536): Microsoft .NET Framework 2.0 - Application Development Foundation, ISBN 0-7356-2277-9
Palavras-chave: 
kbmt KB935218 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 935218  (http://support.microsoft.com/kb/935218/en-us/ )