UI Responsiveness During Synchronous Operations

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Synchronous operations in software applications can disrupt the user interface by locking it up during execution, leading to a poor user experience, and asynchronous operations may not always be feasible or effective in mitigating this issue.

Innovation Solution

The technology allows for the monitoring of synchronous operations on a main thread to be interrupted by asynchronous operations from a secondary thread, enabling the synchronous operation to be canceled and retried after the asynchronous operation completes, ensuring minimal disruption to user interaction and ensuring data changes are accounted for.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a synchronous operation is performed on the main thread, then the operation completes reliably, but the user interface becomes unresponsive during execution

Engineering Contradiction:
Improveoperation completionVSAvoiduser interface responsiveness
Core Design Contradiction:
ReliabilityVSEase of operation

Solution Approach 1:

The system dynamically switches between synchronous and asynchronous execution modes based on operational context. The synchronous operation can be interrupted and converted to asynchronous execution when user interaction is detected, allowing the system to adapt its behavior to balance reliability and responsiveness.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

An intermediary mechanism (the operation manager) is introduced to coordinate between the synchronous operation and the user interface thread. This intermediary can pause the synchronous operation, allow user interactions to proceed, and then resume or complete the operation, thereby maintaining both reliability and responsiveness.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Ease of operation

If the synchronous operation is interrupted to allow user interaction, then the user interface remains responsive, but the operation may be delayed or cancelled

Engineering Contradiction:
Improveuser interface responsivenessVSAvoidoperation completion time
Core Design Contradiction:
Ease of operationVSLoss of time

Solution Approach 1:

The system employs periodic checking mechanisms where the operation manager periodically checks for user interactions during synchronous operation execution. This allows the system to maintain responsiveness by periodically yielding to user input while ensuring the operation eventually completes through periodic resumption or conversion to asynchronous mode.

Inventive Principle:
Principle #19Periodic action

3Productivity

If cloning is used to perform save operations on a copy, then the original operation can proceed without blocking, but sufficient memory must be available

Engineering Contradiction:
Improveoperation throughputVSAvoidmemory availability
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The system uses cloning to create a copy of the data model for save operations, allowing the original operation to continue without blocking. This copying approach enables parallel execution of save operations while maintaining the integrity and responsiveness of the main application thread.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS11074112B2Maintaining the responsiveness of a user interface while performing a synchronous operation
Publication Date: 2021.07.27 MICROSOFT TECHNOLOGY LICENSING LLC
  • US11074112B2 patent drawing
  • US11074112B2 patent drawing
  • US11074112B2 patent drawing

AI summary

Systems, methods, and software are disclosed herein for maintain the responsiveness of a user interface to an application. In an implementation, a synchronous operation is commenced on a main thread of an application. The application monitors for a request by an additional thread to interrupt the synchronous operation in favor of an asynchronous operation. The synchronous operation is canceled in response to the request and is retried after completing the asynchronous operation.