private async Task MainAsync(string[] args)
        {
            var ehDefinition = new EventHubDefinition
            {
                ServiceNamespace = "windowsiot1",
                DeviceId = "windows10iot",
                EventHubName = "windowsiot1eventhub",
                ConnectionString = "Endpoint=sb://windowsiot1.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=gyj5SAwTzrVE3f1XFuT4uyC7bqB82hcPu61D/wx7kl8="
            };

            var telemetryProvider = new NativeTelemetryProvider(ehDefinition);

            var tempProvider = new SystemTemperature();
            System.Console.Write("Ready, hit q to quit >");
            var keepGoing = System.Console.ReadKey().Key != ConsoleKey.Q;
            var order = 0;
            while (keepGoing)
            {
                var result = await telemetryProvider.PostTelemetryAsync(ehDefinition, new DeviceTelemetry
                {
                    DeviceId = ehDefinition.DeviceId,
                    Type = "Temperature",
                    Value = tempProvider.GetTemperature(),
                    Order = ++order
                });
                System.Console.WriteLine(DateTime.Now + ":Sent some data");
                //keepGoing = System.Console.ReadKey().Key != ConsoleKey.Q;
            }
        }
        public async Task<bool> PostTelemetryAsync(EventHubDefinition eventHub, DeviceTelemetry deviceTelemetry)
        {
            try
            {
                var data = JsonConvert.SerializeObject(deviceTelemetry);
                var evtData = new EventData(Encoding.UTF8.GetBytes(data));

                ///set only if you care about sequential delivery
                evtData.PartitionKey = ComputeBucket(Guid.NewGuid().ToString(), PartitionCount);

                await _eventHub.SendAsync(evtData);
                return true;
            }
            catch (Exception e)
            {
                //log your exception somehow...
                return false;
            }
        }
        public async Task<bool> PostTelemetryAsync(EventHubDefinition eventHub, DeviceTelemetry deviceTelemetry)
        {
            // Namespace info.
            var url = new Uri(string.Format("https://{0}.servicebus.windows.net/{1}/publishers/{2}/messages", eventHub.ServiceNamespace, eventHub.EventHubName, eventHub.DeviceId));
            // Create client.
            var httpClient = new HttpClient();

            httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Origin", "*");
            httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Access-Control-Allow-Credentials", "true");
            var payload = JsonConvert.SerializeObject(deviceTelemetry);

            httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", eventHub.SASGeneratedKey);

            var content = new StringContent(payload, Encoding.UTF8, "application/json");

            content.Headers.Add("ContentType", "application/json");

            var result = await httpClient.PostAsync(url, content);
            return result.IsSuccessStatusCode;
        }
        private static void Main(string[] args)
        {
            var ehDefinition = new EventHubDefinition
            {
                ServiceNamespace = "windowsiot1",
                DeviceId = "windows10iot",
                EventHubName = "windowsiot1eventhub",
                ConnectionString = "Endpoint=sb://windowsiot1.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=gyj5SAwTzrVE3f1XFuT4uyC7bqB82hcPu61D/wx7kl8=",
                StorageAccountKey = "FyOzVoluW3xGYWWslUdwYk9yPYOi5C+K69bDDQpGIvZ4SwFRXfuFtd0I/sJCxC0k26GLWQK1OY+BSiyAdFzbww==",
                StorageAccountName = "ehstorage1"
            };

            var storageConnectionString = string.Format("DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}", ehDefinition.StorageAccountName, ehDefinition.StorageAccountKey);

            var eventProcessorHostName = Guid.NewGuid().ToString();
            var eventProcessorHost = new EventProcessorHost(eventProcessorHostName, ehDefinition.EventHubName, EventHubConsumerGroup.DefaultGroupName, ehDefinition.ConnectionString, storageConnectionString);

            System.Console.WriteLine(DateTime.Now + ":Registering EventProcessor...");
            eventProcessorHost.RegisterEventProcessorAsync<SimpleEventProcessor>().Wait();

            System.Console.WriteLine(DateTime.Now + ":Receiving. Press enter key to stop worker.");
            System.Console.ReadLine();
            eventProcessorHost.UnregisterEventProcessorAsync().Wait();
        }
 public NativeTelemetryProvider(EventHubDefinition definition)
 {
     _definition = definition;
     _eventHub = EventHubClient.CreateFromConnectionString(_definition.ConnectionString, _definition.EventHubName);
 }