Это очень разные.
На концептуальном уровне IsOneWay = true говорит о том, что шаблон обмена сообщениями - «включи и забудь», а не, например, 'ответ на запрос'. То есть IOW = true означает, что имеется сообщение от клиента к серверу, но нет ответа от сервера клиенту. Напротив, метод не-IOW = true, как правило, будет иметь ответное сообщение, даже если тип возвращаемого значения void (например, «пустое» сообщение).
Асинхронный шаблон для поведения клиентского кода - например, блокирует ли он ожидание возвращаемого значения или нет. Async - это «локальная» вещь, подробности смотрите в этом блоге . Вы можете иметь асинхронный клиент для сервера синхронизации или клиент синхронизации для асинхронного сервера. WCF сделает волшебство под капотом, чтобы дать вам любую модель программирования. Если у вас есть, например, шаблон обмена запросом-ответом и использование «сгенерировать асинхронность», сгенерированный клиент предоставит вам, например, метод, который вы можете вызвать async (например, отправить сообщение и получить обратный вызов при получении ответа).
Так что используйте «async» для «модели локального программирования» и используйте IOW для «обмена сообщениями по проводам».
Обратите внимание, что в вашем примере, если вы пометите метод IOW = true, то я думаю, что в коде сервера нет причин для Thread.Start (). Вы можете просто выполнить работу прямо в потоке, который WCF дал вашему серверу.