public void ThreadProc() { OperationTaskModel operationTask = new OperationTaskModel(); try { AzureSQLHelper.IoTHubModel iotHubModel = new AzureSQLHelper.IoTHubModel(); IoTHub iotHub = iotHubModel.GetById(_IoTHubReceiverMsg.content.iotHubId); string iotHubConnectionString = iotHub.IoTHubConnectionString; //IoTHub iotHub = new IoTHub(); //iotHub.Id = 1001; //iotHub.IoTHubName = "OPC UA Default"; //string iotHubConnectionString = "HostName=opcuademobox.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=2eHR7uKDmrajO6201NBfUlzGGLrIDi55A2URg0EZuCo="; IoTHubHelper iotHubHelper = new IoTHubHelper(iotHubConnectionString); string[] partitions = iotHubHelper.GetPartitions(); _Version = _IoTHubReceiverMsg.content.version; if (string.IsNullOrEmpty(_Version)) { _Version = _SrvFabricIoTHubReceiverTypeVersion; } _CompanyId = _IoTHubReceiverMsg.content.companyId.ToString(); if (_CompanyId == "0") { _CompanyId = iotHub.CompanyID.ToString(); } ProvisionApp._appLogger.Info(string.Format("Company ID: {0}, IoTHub ID: {1}, Version: {2}", _CompanyId, _IoTHubReceiverMsg.content.iotHubId, _Version)); switch (_IoTHubReceiverMsg.task) { case TaskName.IoTHubReceiver_Launch: if (iotHub.EnableMultipleReceiver) { for (int i = 0; i < partitions.Length; i++) { string label = i + "-" + partitions.Length; lanuchIoTHubReceiver(iotHub.CompanyID.ToString(), iotHub, partitions[i], label); ProvisionApp._appLogger.Info("[IoTHubReceiver] " + _IoTHubReceiverMsg.task + " success: CompanyId-" + _CompanyId + ", IoTHubReceiverName-" + iotHub.IoTHubName + ", Label-" + label); } } else { lanuchIoTHubReceiver(_CompanyId, iotHub, "ALL", "ALL"); ProvisionApp._appLogger.Info("[IoTHubReceiver] " + _IoTHubReceiverMsg.task + " success: CompanyId-" + _CompanyId + ", IoTHubReceiverName-" + iotHub.IoTHubName + ", Label-" + "ALL"); } break; case TaskName.IoTHubReceiver_Shutdown: // Shutdown All Partitions Processes (it maybe not running) for (int i = 0; i < partitions.Length; i++) { string label = i + "-" + partitions.Length; shutdownIoTHubReceiver(_CompanyId, iotHub, partitions[i], label); ProvisionApp._appLogger.Info("[IoTHubReceiver] " + _IoTHubReceiverMsg.task + " success: CompanyId-" + _CompanyId + ", IoTHubReceiverName-" + iotHub.IoTHubName + ", Label-" + label); } // Shutdown Non-Partition Process (it maybe not running) shutdownIoTHubReceiver(_CompanyId, iotHub, "ALL", "ALL"); ProvisionApp._appLogger.Info("[IoTHubReceiver] " + _IoTHubReceiverMsg.task + " success: CompanyId-" + _CompanyId + ", IoTHubReceiverName-" + iotHub.IoTHubName + ", Label-" + "ALL"); break; } operationTask.UpdateTaskBySuccess(_IoTHubReceiverMsg.taskId); } catch (Exception ex) { StringBuilder logMessage = new StringBuilder(); logMessage.AppendLine("[IoTHubReceiver] " + _IoTHubReceiverMsg.task + " Failed: CompanyId-" + _CompanyId + ", IoTHubId-" + _IoTHubReceiverMsg.content.iotHubId); logMessage.AppendLine("\tMessage:" + JsonConvert.SerializeObject(this)); logMessage.AppendLine("\tException:" + ex.Message); ProvisionApp._appLogger.Error(logMessage); operationTask.UpdateTaskByFail(_IoTHubReceiverMsg.taskId, ex.Message); } }