Из MSDN:
По умолчанию Math.Round использует MidpointRounding.ToEven. Большинство людей не знакомы с «округлением до единого», поскольку альтернатива, «округление от нуля», чаще всего преподается в школе. .NET по умолчанию имеет значение «округление до четного», поскольку оно статистически превосходит, поскольку оно не разделяет тенденцию «округления от нуля» к округлению немного чаще, чем округляет его (при условии, что округленные числа имеют тенденцию быть положительными. )
blockquote>http://msdn.microsoft.com/en-us/library/system.math.round.aspx
записали функцию обработчика сообщений в Visual Basic Outlook (мы используем Outlook 2003 и Exchange Server) помочь мне разобраться во входящей электронной почте. Это работает на меня, кроме иногда сбоев правила, и Outlook деактивирует его. Затем я снова включаю правило и вручную выполняю его на моем Ящике входящих сообщений для наверстывания. Правило спонтанно перестало работать и деактивируется несколько раз в день. Я хотел бы зафиксировать это раз и навсегда.
Вот код, лишенный функциональности, но давание общее представление Вам того, как это смотрит:
Public WithEvents myOlItems As Outlook.Items
Public Sub Application_Startup()
' Reference the items in the Inbox. Because myOlItems is declared
' "WithEvents" the ItemAdd event will fire below.
' Set myOlItems = Outlook.Session.GetDefaultFolder(olFolderInbox).Items
Set myOlItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub myOlItems_ItemAdd(ByVal Item As Object)
On Error Resume Next
If TypeName(Item) = "MailItem" Then
MyMessageHandler Item
End If
End Sub
Public Sub MyMessageHandler(ByRef Item As MailItem)
Dim strSender As String
Dim strSubject As String
If TypeName(Item) <> "MailItem" Then
Exit Sub
End If
strSender = LCase(Item.SenderEmailAddress)
strSubject = Item.Subject
rem do stuff
rem do stuff
rem do stuff
End Sub
Одна ошибка, которую я получаю, является вызовом "Несоответствия типов" MyMessageHandler, где VB жалуется, что Объектом не является MailItem. Хорошо, но TypeName (Объект) возвращает "MailItem", поэтому каким образом Объектом не является MailItem?
Другой, который я получаю, - то, где электронное письмо с пустым предметом приходит. Строка
strSubject = Item.Subject
дает мне ошибку. Я знаю Объект. Предметом должен быть пробел, но почему это - ошибка?
Спасибо.
Моя память несколько облачна на этом, но я полагаю, что MailItem не является MailItem, когда это - что-то как получение чтения. (К сожалению, код VBA, который продемонстрировал это, был написан в другом задании и не вокруг теперь.)
У меня также был код, написанный для обработки входящих сообщений, вероятно, по той же причине, которую Вы сделали (слишком много правил для Exchange или правила, слишком сложные для Мастера Правил), и, кажется, вспоминаете столкновение с той же проблемой, которую Вы имеете, что некоторые объекты, казалось, были от другого типа даже при том, что я ловил их с чем-то как то, что Вы записали.
Я буду видеть, могу ли я произвести определенный пример, если он поможет.