QuickOPC components may, under certain circumstances, display a user interface "by itself", without you having to make a specific method call. Such unsolicited user interaction only happens when the current process is running in user interactive mode, as reported by the Environment.UserInteractive Property. In non-interactive mode, the components assume user responses which are, by default, secure. In addition, you can turn off specific user interactions by setting corresponding parameters in the code.
Usually, these are notifications or confirmations related to conditions that cannot be anticipated upfront, such as the certificate exchange in the OPC UA connection process. As QuickOPC controls the connections and diconnections automatically, and when subscriptions are in effect, also makes re-connections, you - as a developer - cannot generally predict when such user interaction may be needed.
There are following situations that may trigger an unsolicited user interaction related to OPC Unified Architecture (OPC UA) operations:
•Issues while checking or creating an application instance certificate. These are rare, and usually only happen when the application runs for the first time. These can be turned off or on by the AllowClientCertificatePrompt Property of of EngineParameters Property of EasyUAClient.SharedParameters Property. See also Providing Client Instance Certificate.
•When HTTPS communication is used, failed validation of server's HTTPS certificate. The user is prompted whether he/she wants to accept the certificate anyway. This prompt can be turned off or on by the AllowUserAcceptCertificate Property of HttpsCertificateAcceptancePolicy Property of EngineParameters Property of EasyUAClient.SharedParameters Property. See also Trusting Server HTTPS Certificate.
•Failed validation of OPC UA server's instance certificate. The user is prompted whether he/she wants to accept the certificate anyway. This prompt can be turned off or on by the AllowUserAcceptCertificate Property of CertificateAcceptancePolicy Property of EngineParameters Property of EasyUAClient.SharedParameters Property. Alternatively, the certificate acceptance policy can be overriden for a specific endpoint by setting it to a non-null value in CertificateAcceptancePolicy Property. See also Trusting Server Instance Certificate.
•The effective host name in endpoint URL returned by the server does not match any of the domain names in the server certificate. This may be an indication of a spoofing attempt. The user is prompted whether he/she wants to allow the endpoint anyway. This prompt can be turned off or on by the AllowEndpointDomainPrompt Property of UAClientSessionParameters Class.
There is no unsolicited user interaction related to OPC Classic operations.
All unsolicited user interaction (with exception of rare messages and confirmations related to client application instance certificate checks) has a timeout associated with it, and a default user response is assumed should the user not respond in time. This means that the current activity cannot be blocked indefinitely if the user fails to respond. In fact, this behavior also guarantees that the activity will eventually proceed even if the Environment.UserInteractive Property incorrectly claimed that the process is running in user interactive mode. The timeout in configurable by the AcceptNotificationTimeout Property in the UAUserInteractionParameters Class. In order to obtain or modify this parameter, access the UserInteractionParameters Property of EngineParameters Property of EasyUAClient.SharedParameters Property.
QuickOPC components do not display, by itself, any visual warning when there is a problem with the license key, or when the trial license runtime expires. Instead, such problems are reported as other errors, using the channels for the programming model used. For example, in Procedural Coding Model, the single-argument method throws an exception, a multiple-argument method returns the error in the Exception Property of the OperationResult Class, or with subscriptions, the error is reported in the Exception Property of the OperationEventArgs Class. It is up to the calling code to handle such situations.