xtd 0.2.0
background_worker.h
Go to the documentation of this file.
1 #pragma once
5 #include "../forms_export.h"
6 #include "component.h"
7 #include "form.h"
11 
13 namespace xtd {
15  namespace forms {
32  class forms_export_ background_worker : public component {
33  struct data;
34 
35  public:
37 
41  background_worker() noexcept;
43 
45  ~background_worker() noexcept;
47 
49 
53  bool cancellation_pending() const noexcept;
54 
57  bool is_busy() const noexcept;
58 
62  bool worker_reports_progress() const noexcept;
66  void worker_reports_progress(bool value);
67 
71  bool worker_supports_cancellation() const noexcept;
75  void worker_supports_cancellation(bool value);
77 
79 
84  void cancel_async();
85 
88  virtual void on_do_work(do_work_event_args& e);
89 
92  virtual void on_progress_changed(const progress_changed_event_args& e);
93 
96  virtual void on_run_worker_completed(const run_worker_completed_event_args& e);
97 
100  void run_worker_async();
101 
105  template<typename argument_t>
106  void run_worker_async(argument_t argument) {
107  argument_(std::any(argument));
108  run_worker_async();
109  }
110 
113  void report_progress(int32 percent_progress);
114 
118  void report_progress(int32 percent_progress, std::any user_state);
120 
122 
127 
131 
136 
137  private:
138  void argument_(std::any&& argument);
139 
140  std::shared_ptr<data> data_;
141  };
142  }
143 }
Executes an operation on a separate thread.
Definition: background_worker.h:32
void run_worker_async(argument_t argument)
Starts execution of a background operation.
Definition: background_worker.h:106
event< background_worker, run_worker_completed_event_handler > run_worker_completed
Occurs when the background operation has completed, has been canceled, or has raised an exception...
Definition: background_worker.h:134
The xtd namespace contains all fundamental classes to access Hardware, Os, System, and more.
Definition: system_report.h:17
event< background_worker, progress_changed_event_handler > progress_changed
Occurs when report_progress(int32) is called.
Definition: background_worker.h:130
Provides data for the xtd::forms::background_worker::run_worker_completed event handler.
Definition: run_worker_completed_event_args.h:22
Contains xtd::forms::progress_changed_event_handler event handler.
Represents an event.
Definition: event.h:21
Contains xtd::forms::form container.
Provides data for the xtd::forms::background_worker::do_work event handler.
Definition: do_work_event_args.h:21
Indicates that all styles except allow_binary_specifier, allow_octal_specifier and allow_hex_specifie...
Provides data for the xtd::forms::background_worker::progress_changed event handler.
Definition: progress_changed_event_args.h:21
int_least32_t int32
Represents a 32-bit signed integer.
Definition: types.h:129
The xtd::forms namespace contains classes for creating Windows-based applications that take full adva...
Definition: about_box.h:13
Contains xtd::forms::component class.
Contains xtd::forms::run_worker_completed_event_handler event handler.
Contains xtd::forms::do_work_event_handler event handler.
event< background_worker, do_work_event_handler > do_work
Occurs when run_worker_async() is called.
Definition: background_worker.h:126
Provides the base implementation and enables object sharing between applications. ...
Definition: component.h:23