---
title: DispatchWorkItem
framework: dispatch
role: symbol
role_heading: Class
path: dispatch/dispatchworkitem
---

# DispatchWorkItem

The work you want to perform, encapsulated in a way that lets you attach a completion handle or execution dependencies.

## Declaration

```swift
class DispatchWorkItem
```

## Overview

Overview A DispatchWorkItem encapsulates work to be performed on a dispatch queue or within a dispatch group. You can also use a work item as a DispatchSource event, registration, or cancellation handler.

## Topics

### Creating a Work Item

- [init(qos:flags:block:)](dispatch/dispatchworkitem/init(qos:flags:block:).md)
- [DispatchWorkItemFlags](dispatch/dispatchworkitemflags.md)

### Executing the Work Item

- [perform()](dispatch/dispatchworkitem/perform().md)

### Adding a Completion Handler

- [notify(queue:execute:)](dispatch/dispatchworkitem/notify(queue:execute:).md)
- [notify(qos:flags:queue:execute:)](dispatch/dispatchworkitem/notify(qos:flags:queue:execute:).md)

### Waiting for the Completion of a Work Item

- [wait()](dispatch/dispatchworkitem/wait().md)
- [wait(timeout:)](dispatch/dispatchworkitem/wait(timeout:).md)
- [wait(wallTimeout:)](dispatch/dispatchworkitem/wait(walltimeout:).md)
- [DispatchTime](dispatch/dispatchtime.md)
- [DispatchWallTime](dispatch/dispatchwalltime.md)

### Canceling a Work Item

- [cancel()](dispatch/dispatchworkitem/cancel().md)
- [isCancelled](dispatch/dispatchworkitem/iscancelled.md)

### Initializers

- [init(flags:block:)](dispatch/dispatchworkitem/init(flags:block:).md)

## See Also

### Queues and Tasks

- [DispatchQueue](dispatch/dispatchqueue.md)
- [DispatchGroup](dispatch/dispatchgroup.md)
- [Dispatch Queue](dispatch/dispatch-queue.md)
- [Dispatch Work Item](dispatch/dispatch-work-item.md)
- [Dispatch Group](dispatch/dispatch-group.md)
- [Workloop](dispatch/workloop.md)
